我正在尝试创建一个新的数据框new_df
,其中包含一个新列,其中包含减去 2 个单独数据框中相同列的值的差异:df1
df2
我曾尝试使用该代码,new_df.loc['difference'] = df1.loc['s_values'] - df2.loc['s_values']
但无法实现我的结果。
在哪里 df1 =
stats s_values
gender year
women 2007 height 40
2007 cigarette use 31
和 df2 =
stats s_values
gender year
Men 2007 height 10
2007 cigarette use 11
达到预期的输出(我不想包括gender
索引)
new_df =
stats difference
year
2007 height 30
2007 cigarette use 20
你可以试试这个(完整的例子):
输入:
import pandas as pd
df1 = pd.DataFrame({'gender': {0: 'woman', 1: 'woman'},
'year': {0: 2007, 1: 2007},
'stats': {0: 'height', 1: 'cigarette use'},
's_values': {0: 40, 1: 31}})
df2 = pd.DataFrame({'gender': {0: 'men', 1: 'men'},
'year': {0: 2007, 1: 2007},
'stats': {0: 'height', 1: 'cigarette use'},
's_values': {0: 10, 1: 11}})
代码:
df = pd.concat([df1,df2], ignore_index=True)
df['s_values'] = df.groupby(['year', 'stats'])['s_values'].diff().abs()
df.dropna(subset=['s_values']).drop('gender', axis=1)
输出:
year stats s_values
2 2007 height 30.0
3 2007 cigarette use 20.0
笔记:
如果两个数据帧的结构完全相同,则它甚至更短:
df1.drop('gender', axis=1).assign(s_values=df1['s_values'] - df2['s_values'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句