首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有自定义第一行的组中的行之间的差异

具有自定义第一行的组中的行之间的差异
EN

Stack Overflow用户
提问于 2020-10-06 04:33:59
回答 1查看 20关注 0票数 0

我希望在组中的特定数据框列中获得更改。".diff()“让我很接近,但是我需要为第一行指定一些特殊的东西,它应该等于' first‘的值。我想上“德尔塔”栏目。按“项目”分组,计算“差值”作为PrEFPx中的差值。

示例:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-10-06 04:38:07

看起来就像您提到的后跟fillnagroupby().diff

代码语言:javascript
复制
df['Delta'] = df.groupby('Item')['PrEFPx'].diff().fillna(df['PrEFPx'])

输出:

代码语言:javascript
复制
    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()类似的方法

代码语言:javascript
复制
df['Delta'] = df['PrEFPx'] - df.groupby('Item')['PrEFPx'].shift(fill_value=0)

输出:

代码语言:javascript
复制
    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  -1000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64215822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档