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

Python 查找特定列上两行之间的差异,python,pandas,dataframe,Python,Pandas,Dataframe,我想知道,在保持其他列不变的情况下,如何找到一个数据帧中多个列之间的差异 因此,如果我有DataFrame,DF,我想找出列(val1,val2,val3)之间的差异,同时保留月份和年份。用户类型不重要,可以删除 df=pd.DataFrame({'mo':['6','6'], …:“年”:[“2017”、“2017”], …:'user_type':['a','b'], …:'val1':['1','10'], …:'val2':['2','20'], …:'val3':['3','30']}

我想知道,在保持其他列不变的情况下,如何找到一个数据帧中多个列之间的差异

因此,如果我有DataFrame,DF,我想找出列(val1,val2,val3)之间的差异,同时保留月份和年份。用户类型不重要,可以删除

df=pd.DataFrame({'mo':['6','6'],
…:“年”:[“2017”、“2017”],
…:'user_type':['a','b'],
…:'val1':['1','10'],
…:'val2':['2','20'],
…:'val3':['3','30']},
…:索引=[0,1])
####DF####
|索引| mo | yr |用户|类型| val1 | val2 | val3|
|-------|----|------|-----------|------|------|------|
|0 | 6 | 2017 | a | 1 | 2 | 3|
|1 | 6 | 2017 | b | 10 | 20 | 30|
这可能吗?我尝试使用
df.diff()
,如果我的数据框只包含三个值列,但如果我有月份和年份列,则该方法不起作用

理想情况下,这样的东西将是我的输出

| index | mo | yr   | val1 | val2 | val3 |
|-------|----|------|------|------|------|
| 0     | 6  | 2017 | 9    | 18   | 27   |
非常感谢您的帮助

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
输出

    mo  yr    val1  val2    val3
0   6   2017    9   18       27