gpt4 book ai didi

python - pandas如何通过计算现有列的值来分组创建其他列

转载 作者:行者123 更新时间:2023-11-30 21:59:37 25 4
gpt4 key购买 nike

我知道如何在 R 中执行此操作( How to make new columns by counting up an existing column ),但我也想知道它在 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.sizeunstack :

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()

关于python - pandas如何通过计算现有列的值来分组创建其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54528876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com