我有一个由groupby创建的数据帧:
hmdf = pd.DataFrame(hm01)
new_hm01 = hmdf[['FinancialYear','Month','FirstReceivedDate']]
hm05 = new_hm01.pivot_table(index=['FinancialYear','Month'], aggfunc='count')
vals1 = ['April ', 'May ', 'June ', 'July ', 'August ', 'September', 'October ', 'November ', 'December ', 'January ', 'February ', 'March ']
df_hm = new_hm01.groupby(['Month', 'FinancialYear']).size().unstack(fill_value=0).rename(columns=lambda x: '{}'.format(x))
df_hml = df_hm.reindex(vals1)
DF看起来是这样的:
FinancialYear 2014/2015 2015/2016 2016/2017 2017/2018
Month
April 34 24 22 20
May 29 26 21 25
June 19 39 22 20
July 23 39 18 20
August 36 30 34 0
September 35 23 41 0
October 36 37 27 0
November 38 31 30 0
December 36 41 23 0
January 34 30 35 0
February 37 26 37 0
March 36 31 33 0
列名来自变量(threeYr,twoYr,oneYr,Yr)
,我想转换dataframe,以便数字是每列总数的百分比,但我无法使其工作。
这就是我想要的:
FinancialYear 2014/2015 2015/2016 2016/2017 2017/2018
Month
April 9% 6% 6% 24%
May 7% 7% 6% 29%
June 5% 10% 6% 24%
July 6% 10% 5% 24%
August 9% 8% 10% 0%
September 9% 6% 12% 0%
October 9% 10% 8% 0%
November 10% 8% 9% 0%
December 9% 11% 7% 0%
January 9% 8% 10% 0%
February 9% 7% 11% 0%
March 9% 8% 10% 0%
有人能帮我做这个吗?
编辑:我尝试了此链接上的响应:pandas convert columns to percentages of the totals。。。。。我不能让它为我的数据帧工作+它不能很好地(对我)解释如何使它为任何DF工作。我相信约翰·高尔特的回答比我的意见要好。
有一个办法
而且,如果要将值四舍五入到小数点后1位,并将值作为带“%”的字符串
相关问题 更多 >
编程相关推荐