我有一个带有Multindex(id和datetime)的熊猫数据框,以及一个名为X1的列。
X1
id datetime
a1ssjdldf 2019 Jul 10 2
2019 Jul 11 22
2019 Jul 12 21
r2dffs 2019 Jul 10 14
2019 Jul 11 13
2019 Jul 12 11
我想创建一个新变量X2,其中相应的值是同一行的X1值和上一行的X1值之间的差。但是,每次看到新的ID时,都必须从零重新开始相应的值。
例如:
X1 X2
id datetime
a1ssjdldf 2019 Jul 10 2 0
2019 Jul 11 22 20
2019 Jul 12 21 -1
r2dffs 2019 Jul 10 14 0
2019 Jul 11 13 -1
2019 Jul 12 11 -2
最佳答案
在第一级使用DataFrameGroupBy.diff
并用Series.fillna
替换缺少的值:
df['X2'] = df.groupby(level=0)['X1'].diff().fillna(0, downcast='int')
print (df)
X1 X2
id datetime
a1ssjdldf 2019 Jul 10 2 0
2019 Jul 11 22 20
2019 Jul 12 21 -1
r2dffs 2019 Jul 10 14 0
2019 Jul 11 13 -1
2019 Jul 12 11 -2
关于python - Pandas Multiindex:迭代行并添加特定值以创建新变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56969853/