【发布时间】:2015-08-29 01:52:26
【问题描述】:
首先是数据:
df
City Date Sex Weight
0 A 6/12/2015 M 185
1 A 6/12/2015 F 120
2 A 7/12/2015 M 210
3 A 7/12/2015 F 105
4 B 6/12/2015 M 225
5 B 6/12/2015 F 155
6 B 6/19/2015 M 167
7 B 6/19/2015 F 121
我正在尝试减去两个权重,男性和女性。我能够对数据进行分组并选择每种性别的权重,但无法简单地创建一个新变量“wt_diff”并让“wt_diff”出现在每一行上,而不管性别如何,这样每个城市/日期/性别组都会在事实上,在同一行,两性之间的体重差异。
我希望有这个输出:
df_new
City Date Sex Weight Wt_Diff
0 A 6/12/2015 M 185 65
1 A 6/12/2015 F 120 65
2 A 7/12/2015 M 210 105
3 A 7/12/2015 F 105 105
4 B 6/12/2015 M 225 70
5 B 6/12/2015 F 155 70
6 B 6/19/2015 M 167 46
7 B 6/19/2015 F 121 46
我可以使用这个来获得重量差异:
def diffw(df):
return(np.diff(df.Weight)*-1)
gb = ['Date', 'City']
gb=df.groupby(gb).apply(diffw)
gb
Date City
6/12/2015 A [65]
B [70]
6/19/2015 B [46]
7/12/2015 A [105]
dtype: object
我不知道如何将 wt_diffs 恢复到每一行的原始 df。
非常感谢您的帮助。 . . 约翰
【问题讨论】:
标签: python pandas group-by dataframe