Python 熊猫计数groupby结果中的特定值

Python 熊猫计数groupby结果中的特定值,python,pandas,Python,Pandas,我刚刚学习了如何使用datetime索引按日期对Pandas数据帧进行分组。我如何计算groupby每天返回的特定值(“通过”或“失败”)的数量 我的目标是计算每日收益率:收益率=通过计数/(通过计数+失败计数) 我想你需要或者,重塑为,最后除以,求和: np.random.seed(142) data = np.random.choice(['Passed','Failed'], size=100) times = pd.date_range('20180101',freq='3H',per

我刚刚学习了如何使用datetime索引按日期对Pandas数据帧进行分组。我如何计算groupby每天返回的特定值(“通过”或“失败”)的数量

我的目标是计算每日收益率:收益率=通过计数/(通过计数+失败计数)

我想你需要或者,重塑为,最后除以,求和:

np.random.seed(142)

data = np.random.choice(['Passed','Failed'], size=100)
times = pd.date_range('20180101',freq='3H',periods=100)

df = pd.DataFrame({'A':data},index=times)
#print (df)


谢谢如何从df1结果中提取行?df1['2018-01-13']抛出一个键错误。@stephenb-您需要
loc
like
print(df1.loc['2018-01-13'])
np.random.seed(142)

data = np.random.choice(['Passed','Failed'], size=100)
times = pd.date_range('20180101',freq='3H',periods=100)

df = pd.DataFrame({'A':data},index=times)
#print (df)
df1 = df.groupby([pd.Grouper(freq='1D'), 'A']).size().unstack(fill_value=0)
#alternative 
#df1 = df.groupby(pd.Grouper(freq='1D'))['A'].value_counts().unstack(fill_value=0)
df1['new'] = df1['Passed'].div(df1.sum(axis=1))
#alternative
#df1['new'] = df1['Passed'].div(df1['Passed'].add(df1['Failed']))

print (df1)
A           Failed  Passed    new
2018-01-01       5       3  0.375
2018-01-02       5       3  0.375
2018-01-03       4       4  0.500
2018-01-04       4       4  0.500
2018-01-05       4       4  0.500
2018-01-06       3       5  0.625
2018-01-07       4       4  0.500
2018-01-08       5       3  0.375
2018-01-09       4       4  0.500
2018-01-10       4       4  0.500
2018-01-11       4       4  0.500
2018-01-12       7       1  0.125
2018-01-13       0       4  1.000