我希望在组中的特定数据框列中获得更改。".diff()“让我很接近,但是我需要为第一行指定一些特殊的东西,它应该等于' first‘的值。我想上“德尔塔”栏目。按“项目”分组,计算“差值”作为PrEFPx中的差值。
示例:
Item | Month | PrEFPx | Delta
-----------------------------------------
1 | 1 | 1000 | 1000
1 | 2 | 1000 | 0
1 | 3 | 1000 | 0
1 | 4 | 1500 | 500
1 | 5 | 1500 | 0
1 | 6 | 1500 | 0
1 | 7 | 3000 | 1500
2 | 1 | 5000 | 5000
2 | 2 | 5000 | 0
2 | 3 | 5000 | 0
2 | 4 | 5000 | 0
2 | 5 | 5000 | 0
2 | 6 | 4000 | -1000发布于 2020-10-06 04:38:07
看起来就像您提到的后跟fillna的groupby().diff
df['Delta'] = df.groupby('Item')['PrEFPx'].diff().fillna(df['PrEFPx'])输出:
Item Month PrEFPx Delta
0 1 1 1000 1000.0
1 1 2 1000 0.0
2 1 3 1000 0.0
3 1 4 1500 500.0
4 1 5 1500 0.0
5 1 6 1500 0.0
6 1 7 3000 1500.0
7 2 1 5000 5000.0
8 2 2 5000 0.0
9 2 3 5000 0.0
10 2 4 5000 0.0
11 2 5 5000 0.0
12 2 6 4000 -1000.0或者另一种与groupby().shift()类似的方法
df['Delta'] = df['PrEFPx'] - df.groupby('Item')['PrEFPx'].shift(fill_value=0)输出:
Item Month PrEFPx Delta
0 1 1 1000 1000
1 1 2 1000 0
2 1 3 1000 0
3 1 4 1500 500
4 1 5 1500 0
5 1 6 1500 0
6 1 7 3000 1500
7 2 1 5000 5000
8 2 2 5000 0
9 2 3 5000 0
10 2 4 5000 0
11 2 5 5000 0
12 2 6 4000 -1000https://stackoverflow.com/questions/64215822
复制相似问题