python:如何根据另一列分别对数据框列的唯一元素求和

标签 python pandas dataframe

例如,我有一个包含两列的 df。

输入

df = pd.DataFrame({'user_id':list('aaabbbccc'),'label':[0,0,1,0,0,2,0,1,2]})
print('df\n',df)

输出

df
    label user_id
0      0       a
1      0       a
2      1       a
3      0       b
4      0       b
5      2       b
6      0       c
7      1       c
8      2       c

我想分别按user_id统计label组中的元素。 预期输出如下所示。

预期

  df
    label user_id  label_0  label_1  label_2
0      0       a        2         1         0
1      0       a        2         1         0
2      1       a        2         1         0
3      0       b        2         0         1
4      0       b        2         0         1
5      2       b        2         0         1
6      0       c        1         1         1 
7      1       c        1         1         1
8      2       c        1         1         1

简而言之,在 label_0 列中,我根据 user_id 列计算 label 列中 0 的数量.

希望得到帮助!

最佳答案

想法是通过 groupby 创建助手 DataFramesizevalue_counts然后 unstackjoin到原始的df:

df = (df.join(df.groupby(['user_id', 'label'])
                .size()
                .unstack(fill_value=0)
                .add_prefix('label_'), 'user_id'))

df = (df.join(df.groupby('user_id')['label']
                .value_counts()
                .unstack(fill_value=0)
                .add_prefix('label_'), 'user_id'))

或使用 crosstabmerge左连接:

df = (df.merge(pd.crosstab(df['user_id'], df['label'])
                 .add_prefix('label_'), on='user_id', how='left'))

print (df)
  user_id  label  label_0  label_1  label_2
0       a      0        1        2        0
1       a      1        1        2        0
2       a      1        1        2        0
3       b      1        1        1        1
4       b      2        1        1        1
5       b      0        1        1        1
6       c      0        1        1        1
7       c      1        1        1        1
8       c      2        1        1        1

关于python:如何根据另一列分别对数据框列的唯一元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51265888/

相关文章:

python - Sphinx 自动摘要生成表中的自动换行

python - 如何在不卡住主 UI 的情况下更新 QStandardItemModel

python - 为什么从 ggplot 生成的图没有显示出来?

python-3.x - 如何从数据框中获取系列(列),并将(column_name/row_name/1)作为新(日期)索引

python Pandas : How to specify the starting cell position when exporting dataframe to Excel

python pandas isin 方法?

Python 2.*/Cherrypy - 将处理的异常作为对象或字符串并输出到错误页面

python - 使用 PyMongo 将 NumPy rec.array 插入 MongoDB

python - Pandas 自定义函数返回列值

python - Numpy 按列按循环对矩阵进行排序