我想知道如何在熊猫数据框中找到多个列之间的差异,同时保持其他列不变。
因此,如果我有DataFrame,DF,我想查找列(val1,val2,val3)之间的差异,同时保留月份和年份。用户类型并不重要,可以删除。
df = pd.DataFrame({'mo': ['6', '6'],
...: 'yr': ['2017', '2017'],
...: 'user_type': ['a', 'b'],
...: 'val1': ['1', '10'],
...: 'val2': ['2', '20'],
...: 'val3': ['3', '30']},
...: index=[0, 1])
#### DF ####
| index | mo | yr | user_type | val1 | val2 | val3 |
|-------|----|------|-----------|------|------|------|
| 0 | 6 | 2017 | a | 1 | 2 | 3 |
| 1 | 6 | 2017 | b | 10 | 20 | 30 |
这可能吗?我尝试使用df.diff()
,如果我的数据框仅包含三个值列,而我有month和year列,则无法使用。
理想情况下,这将是我的输出
| index | mo | yr | val1 | val2 | val3 |
|-------|----|------|------|------|------|
| 0 | 6 | 2017 | 9 | 18 | 27 |
任何帮助将不胜感激。
答案 0 :(得分:2)
df.groupby(['mo','yr'])['val1','val2','val3'].apply(lambda x : x.iloc[1]-x.iloc[0]).reset_index()
输出
mo yr val1 val2 val3
0 6 2017 9 18 27