使用pandas创建摘要选项卡

2024-07-02 11:40:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用pandas从下面的数据中获取汇总表:

ID  Condition   Confirmed
D0119   Bad Yes
D0119   Good    No
D0117   Bad Yes
D0110   Bad Undefined
D1011   Bad Yes
D1011   Good    Yes
D1001   Bad Yes
D1001   Bad Yes

所需输出:

^{pr2}$

有人能帮忙吗?谢谢


Tags: 数据noidpandasconditionyesbadgood
2条回答

你可以这样做:

In [123]: (df.assign(Bad=df.Condition=='Bad')
     ...:    .groupby('ID')
     ...:    .agg({'Condition':pd.Series.tolist,
     ...:          'Confirmed':pd.Series.tolist,
     ...:          'Bad':'mean'})
     ...: )
     ...:
Out[123]:
       Bad    Condition    Confirmed
ID
D0110  1.0        [Bad]  [Undefined]
D0117  1.0        [Bad]        [Yes]
D0119  0.5  [Bad, Good]    [Yes, No]
D1001  1.0   [Bad, Bad]   [Yes, Yes]
D1011  0.5  [Bad, Good]   [Yes, Yes]

垂直变体:

^{pr2}$

考虑以下几点。在

import pandas as pd

df = pd.DataFrame({'ID':['D0119', 'D0119', 'D0117', 'D0110', 'D1011', 'D1011', 'D1001', 'D1001'],
                   'Condition':['Bad', 'Good', 'Bad', 'Bad', 'Bad', 'Good', 'Bad', 'Bad'],
                   'Confirmed':['Yes', 'No', 'Yes', 'Undefined', 'Yes', 'Yes', 'Yes', 'Yes']})

df_grp = df.loc[df['Confirmed'] != 'Undefined'].groupby('ID')
summary = pd.DataFrame({'Condition':df_grp['Condition'],
                        'pnt_bad':df_grp['Condition'].apply(lambda x: sum(x=='Bad')/len(x))})

请注意,这种方法不会保留只有“未定义”状态的记录的外观。在

相关问题 更多 >