import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
'status':['yes','yes','no','no','yes','no','no','yes','no','yes'],
'month':['m1','m2','m3','m2','m1','m3','m2','m1','m3','m1'],
'points': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})
#view DataFrame
print(df)
尝试使用以下代码
x = df.groupby(['team','month','status']).size().reset_index().rename(columns={0:'cnt'}).pivot(index='team',columns=['month','status'])
x = x.fillna(0)
x
预期输出在groupby %计算范围内
对于每个月m1或m2或m3,考虑计算yes%和no%。例如
对于m1和A组,是% 100%和否%应为0% m2和A组,是% 100%和否%应为0% m3和A组,是% 50%和否%应为50%,对于B组,类似
1条答案
按热度按时间zbq4xfa01#
您可以将
crosstab
与normalize
一起使用-但输出不同:如果需要新的百分比列:
关于
SeriesGroupBy.value_counts
:您的输出:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个