在特定列上查找两行之间的差异

时间:2019-08-28 16:10:03

标签: python pandas dataframe

我想知道如何在熊猫数据框中找到多个列之间的差异,同时保持其他列不变。

因此,如果我有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   |

任何帮助将不胜感激。

1 个答案:

答案 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