熊猫通过对现有列的值进行计数来分组创建其他列

用户9191983

我知道如何在R中执行此操作(如何通过计算现有列来创建新列),但我也想知道它在python中的工作方式。

当原始表如下

 userID   cat1    cat2
    a        f       3
    a        f       3
    a        u       1
    a        m       1
    b        u       2
    b        m       1
    b        m       2

我按用户ID对它们进行分组,并希望它像

userID   cat1_f  cat1_m  cat1_u  cat2_1  cat2_2  cat2_3
a        2       1       1       2       0       1
b        0       2       1       1       2       0
耶斯列尔

meltGroupBy.size和一起使用unstack

df = (df.melt('userID')
        .groupby(['userID','variable','value'])
        .size()
        .unstack([1,2], fill_value=0))
#python 3.6+
df.columns = [f'{a}_{b}' for a, b in df.columns]
#python bellow
#df.columns = ['{}_{}'.format(a,b) for a, b in df.columns]
df = df.reset_index()
print (df)
RangeIndex(start=0, stop=7, step=1)
  userID  cat1_f  cat1_m  cat1_u  cat2_1  cat2_3  cat2_2
0      a       2       1       1       2       2       0
1      b       0       2       1       1       0       2

另一种选择crosstab

df = df.melt('userID')
df = pd.crosstab(df['userID'], [df['variable'], df['value']])
df.columns = [f'{a}_{b}' for a, b in df.columns]
df = df.reset_index()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按多列分组,并对熊猫中其他列的值进行透视和计数

熊猫:如何按一列分组并显示每组所有其他列的唯一值计数?

熊猫,分组依据和其他列中的数据计数

熊猫使用其他列中的值创建新列,并根据列值进行选择

对一列进行分组并查找熊猫中其他两列的差的最大(绝对)值

熊猫通过其他列的计数填充列

熊猫:按A列对数据进行分组,按B列的现有值过滤A

MYSQL:根据其他列分组的计数设置列值

通过对现有列进行分组和执行操作,在 pandas df 中创建新列

用R中另一列的分组值进行计数来创建一个新的数据框

如何根据oracle中的其他列值对行进行分组并获取计数

当列包含带有熊猫的值列表时,对值进行分组和计数

根据其他列上的值对列进行分组以在 Pandas 中创建新列

使用dplyr mutuate(或其他程序包)基于每行中特定值的计数来创建新列

如何通过使用python中的现有列创建以其他列为条件的新列

从 R 中的现有列值创建新列(使用其他列作为键)

熊猫:分组并为所有其他行分配来自单个特定行和列的值

通过连接 subid 值和其他列名,从分组行扩展/创建 Pandas 列

熊猫根据其他列的值创建新的列ID

熊猫:根据现有列中的值创建新列

熊猫从现有列值创建新列

通过使用列中的值对熊猫进行分组

熊猫:如何在数据框架中创建新列并考虑其他现有列在其中添加值

如何对日期进行分组以及与熊猫中的其他列进行分组

是否有熊猫函数来转置数据框以为现有列的每个唯一值创建单独的列?

如何通过对不包含STRING_AGG的其他列进行分组来创建JSON列(SQL Server)

通过在PySpark中的现有列中应用函数来创建新列?

熊猫数据框通过比较所有其他行来创建新列

根据其他列的值创建累积计数