计算pandas数据帧中行组的行%

时间:2018-03-20 04:42:21

标签: python pandas pandas-groupby

我的数据框看起来像这样:

Name    Category    Amount
ABC     Science     50
ABC     History     -100
XYZ     Science      600
XYZ     Geography    -300

我想要一个数据帧,看起来像:

Name    Category    Amount   Category%
ABC     Science     50        33.33
ABC     History     -100      66.66
XYZ     Science      500      50
XYZ     Geography    -500     50

你能否告诉我们哪种转型最有效?

提前致谢

1 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,但我想这就是你想要的 -

df['absamt'] = df['Amount'].apply(lambda x:abs(x))
df = df.merge(df.groupby("Name")["absamt"].sum().reset_index(), on="Name", how="left")
df['Ratio'] = df['absamt_x']/df['absamt_y']