Python计算dataframe列中值的频率

2024-03-29 00:13:57 发布

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

我有以下程序:

df = pd.DataFrame({'student':['a'] * 4 + ['b'] * 6,
                           'semester':[1,1,2,2,1,1,2,2,2,2],
                           'passed_exam':[True, False] * 5})

    print (df)
      passed_exam  semester student
    0        True         1       a
    1       False         1       a
    2        True         2       a
    3       False         2       a
    4        True         1       b
    5       False         1       b
    6        True         2       b
    7       False         2       b
    8        True         2       b
    9       False         2       b

    table = df.groupby(["student","semester","passed_exam"])
              .size()
              .unstack(fill_value=0)
              .rename_axis(None, axis=1)
              .reset_index()
    print (table)
      student  semester  False  True
    0       a         1      1     1
    1       a         2      1     1
    2       b         1      1     1
    3       b         2      2     2

我想向第二个dataframe添加一个新列,该列统计学生总数。像这样:

^{pr2}$

有什么想法吗?在

提前谢谢你!在


Tags: 程序falsetruedataframedfsizetablestudent
2条回答

由于表中每个学生有两行,一种方法是使用原始df查找学生计数并映射到表

table['total_st'] = table['student'].map(df.groupby('student').size())


passed_exam student semester    False   True    total_st
0           a           1       1       1       4
1           a           2       1       1       4
2           b           1       1       1       6
3           b           2       2       2       6

Groupby'student',使用size对其进行计数,然后与表合并:

table.merge(pd.DataFrame(df.groupby('student').size()).reset_index(), on='student')

相关问题 更多 >