我有一个dataframe
,并且想要减去前一行的两列,前提是前一行的值为相同的Name
。如果没有,那么我希望它产生NAN
并填写-
。我的groupby
表达式产生错误,TypeError: 'Series' objects are mutable, thus they cannot be hashed
,这是非常模糊的。我错过了什么?在熊猫中用Groupby减去两列
import pandas as pd
df = pd.DataFrame(data=[['Person A', 5, 8], ['Person A', 13, 11], ['Person B', 11, 32], ['Person B', 15, 20]], columns=['Names', 'Value', 'Value1'])
df['diff'] = df.groupby('Names').apply(df['Value'].shift(1) - df['Value1'].shift(1)).fillna('-')
print df
所需的输出:
Names Value Value1 diff
0 Person A 5 8 -
1 Person A 13 11 -3
2 Person B 11 32 -
3 Person B 15 20 -21