Python 熊猫:在应用功能中使用选定数量的前几行
假设我有下面的数据框:Python 熊猫:在应用功能中使用选定数量的前几行,python,pandas,Python,Pandas,假设我有下面的数据框: index value 1 1 2 2 3 3 4 4 我想使用“apply”语句对前两行的每一行应用一个函数。例如,假设我想要多个当前行和前2行(如果存在)。(这可能是任何功能) 结果: index value result 1 1 nan 2 2 nan 3 3 6 4 4 24 谢谢。我想您有四排以上的
index value
1 1
2 2
3 3
4 4
我想使用“apply”语句对前两行的每一行应用一个函数。例如,假设我想要多个当前行和前2行(如果存在)。(这可能是任何功能)
结果:
index value result
1 1 nan
2 2 nan
3 3 6
4 4 24
谢谢。我想您有四排以上的吧。如果是这样,请每四行尝试
groupby
,cumproduct
,选择last 2
并将加入原始数据框
df['value']=df.index.map(df.assign(result=df['value'].cumprod(0)).groupby(df.index//4).result.tail(2).to_dict())
如果只有四行,那么这应该是你的
让我们尝试组合.cumprod()
和.tail()
使用分配功能:
df = df.assign(result = lambda x: x['value'].cumprod().tail(len(df)-2))
您可以尝试使用产品滚动:
df['result'] = df['value'].rolling(3).apply(lambda x: x.prod())
输出:
index value result
0 1 1 NaN
1 2 2 NaN
2 3 3 6.0
3 4 4 24.0
您是否需要df['value']*df['value'].shift()*df['value'].shift(2)
?请参阅下面我编辑的答案。很高兴能进一步帮助我,请告诉我
index value result
0 1 1 NaN
1 2 2 NaN
2 3 3 6.0
3 4 4 24.0