python - 如何通过从组中减去元素来创建变量?例如,每组每行的值 - 组值的第一行

标签 python pandas dataframe

在以下示例中,最好进行分组,以便可以通过在每个组中取第一年并减去当前年份来形成一个新列。例如,在索引为 0 的行中,它将为 NaN,在索引为 1 的行中,它将 = 1,在索引 2 的行中,它将 = 3,在索引 4 的行中,它将 = 1 等等。

>>> import pandas as pd
>>> df = pd.DataFrame({'id': ['1', '1', '1', '2', '2', '3', '4', '4'],
...                    'Year': [2000, 2001, 2003, 2004, 2005, 2002, 2001, 2003]})
>>> print(df)
  id  Year
0  1  2000
1  1  2001
2  1  2003
3  2  2004
4  2  2005
5  3  2002
6  4  2001
7  4  2003

最佳答案

使用 first 转换 Year 以获取每个 id 的第一年,然后从 Year 列中减去它获取差异,最后屏蔽差异为0的值:

s = df['Year'] - df.groupby('id')['Year'].transform('first')
df['col'] = s.mask(s == 0)

  id  Year  col
0  1  2000  NaN
1  1  2001  1.0
2  1  2003  3.0
3  2  2004  NaN
4  2  2005  1.0
5  3  2002  NaN
6  4  2001  NaN
7  4  2003  2.0

关于python - 如何通过从组中减去元素来创建变量?例如,每组每行的值 - 组值的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72313150/

相关文章:

python - 在行、多个键上滚动减法

excel - 保存到Excel pandas时出现奇怪的问题

python - 根据列值删除行时 'column name' 上的语法无效

python - 如果值匹配,则自动比较 2 个 csv 文件的值,将第二个 csv 读入 DataFrame

python - 我们如何将字节作为关键字参数的键传递给函数?

Java Processbuilder 流转 Python 脚本

python - Pandas 切割方法排除下限

python - 如何制作一个显示日期列范围的标题?

python - 考虑 NaN 值+Pandas 的采样数据帧

python - sklearn 分类器 - 最大化 auc 的 Predict_proba 阈值