【问题标题】:Creating list in Pandas Dataframe at Index level using .apply() and Range function使用 .apply() 和 Range 函数在索引级别的 Pandas Dataframe 中创建列表
【发布时间】:2020-06-24 09:26:22
【问题描述】:

我正在尝试使用 range 函数在我的数据框中的每个索引级别创建一个列表。该列表的起始值应等于“95_moneyness”,结束值为“105_moneyness”,步长值为 5。例如,在 Index = 1 时,列表应如下所示:[3095, 3100, 3105, 3110,.. .,3420]。到目前为止,我已经尝试了以下代码:

df2.apply(range(df2['95_moneyness'], df2['105_moneyness'], 5), axis=0)

我收到以下错误:

'Series' object cannot be interpreted as an integer.

我想这是我试图将一个系列传递给范围而不是整数的结果。

谁能推荐一个解决方案?我考虑过为此定义我自己的自定义范围函数,或者对完全不同的方法持开放态度。

非常感谢!

【问题讨论】:

  • 我认为您应该尝试使用axis=1。所以,它应该是这样的:df2.apply(range(df2['95_moneyness'], df2['105_moneyness'], 5), axis=1)
  • 感谢您查看,但是,不幸的是,这给出了相同的错误消息!

标签: python pandas indexing range apply


【解决方案1】:

所以,问题在于您使用的是df 而不是行变量。此外,您需要将轴更改为 axis=1 以便遍历行。最后,您需要将float 值转换为int

简而言之,命令应该是这样的:

df.apply(lambda x: range(int(x['95_moneyness']), int(x['105_moneyness']), 5), axis=1)

这是一个最小的例子:

import pandas as pd

df = pd.DataFrame({"95_moneyness": [3095.0, 3075.0, 3085.0, 3075.0, 3095.0],
                    "105_moneyness": [3420.0, 3395.0, 3410.0, 3400.0, 3415.0]})

df["new"] = df.apply(lambda x: range(int(x['95_moneyness']), int(x['105_moneyness']), 5), axis=1)
print(df)
#   95_moneyness  105_moneyness                                                new
#0        3095.0         3420.0  (3095, 3100, 3105, 3110, 3115, 3120, 3125, 313...
#1        3075.0         3395.0  (3075, 3080, 3085, 3090, 3095, 3100, 3105, 311...
#2        3085.0         3410.0  (3085, 3090, 3095, 3100, 3105, 3110, 3115, 312...
#3        3075.0         3400.0  (3075, 3080, 3085, 3090, 3095, 3100, 3105, 311...
#4        3095.0         3415.0  (3095, 3100, 3105, 3110, 3115, 3120, 3125, 313...

【讨论】:

  • 非常感谢您的帮助,这似乎已经成功了!我的数据框现在有一个新列,它是两个货币级别之间的值范围。这促使我提出一个额外的后续问题:我可以将这个新列存储为每个索引级别的列表而不是范围对象吗?我想对这些对象执行额外的操作,我不确定将它们存储为列表或范围对象是否更好。
  • 如果你想得到一个列表,那么你可以像这样简单地转换范围对象:list(range(...))。但它们都是一样的。
猜你喜欢
  • 2020-08-20
  • 2019-10-29
  • 2022-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2021-03-04
相关资源
最近更新 更多