pd.get_dummies()带有分隔符和计数

2024-09-30 16:42:10 发布

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

我的数据如下所示:

index stringColumn
0 A_B_B_B_C_C_D
1 A_B_C_D
2 B_C_D_E_F
3 A_E_F_F_F

我需要使用计数对这个stringColumn进行矢量化,结果是:

index A B C D E F
0 1 3 2 1 0 0
1 1 1 1 1 0 0 
2 0 1 1 1 1 1
3 1 0 0 0 1 3

因此,我需要同时进行:计数拆分。Pandas str.get_dummies()函数允许我使用sep=''.'参数拆分字符串,但是它不计算多个值。pd.get_dummies()进行计数,但不允许使用分隔符

我的数据量很大,所以我在寻找矢量化的解决方案,而不是循环


Tags: 数据函数字符串pandas参数getindex矢量化
1条回答
网友
1楼 · 发布于 2024-09-30 16:42:10

您可以将^{}^{}sum一起使用:

df1 = (pd.get_dummies(df['stringColumn'].str.split('_', expand=True), 
                    prefix='', prefix_sep='')
         .sum(level=0, axis=1))

或按^{}计算每行的值,用^{}替换缺少的值并转换为整数:

df1 = (df['stringColumn'].str.split('_', expand=True)
                         .apply(pd.value_counts, axis=1)
                         .fillna(0)  
                         .astype(int))
       

或者使用^{},性能应该非常好:

from collections import Counter

df1 = (pd.DataFrame([Counter(x.split('_')) for x in df['stringColumn']])
         .fillna(0)
         .astype(int))
        

或通过^{}重新塑造形状并通过^{}计数:

df1 = (df['stringColumn'].str.split('_', expand=True)
                         .stack()
                         .groupby(level=0)
                         .value_counts()
                         .unstack(fill_value=0))

print (df1)

   A  B  C  D  E  F
0  1  3  2  1  0  0
1  1  1  1  1  0  0
2  0  1  1  1  1  1
3  1  0  0  0  1  3

相关问题 更多 >