在数据帧python上对列中的特定字符串进行计数

2024-10-01 15:32:32 发布

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

我有一个(101×1766)数据帧,我把一个样本放下来。你知道吗

Index  Id  Brand1   Brand2   Brand3
0      1   NaN      Good     Bad
1      2   Bad      NaN      NaN
2      3   NaN      NaN      VeryBad
3      4   Good     NaN      NaN
4      5   NaN      Good     VeryGood
5      6   VeryBad  Good     NaN

我想要的是一张这样的桌子

Index  VeryBad   Bad    Good   VeryGood
Brand1  1        1      0      0
Brand2  0        0      3      0
Brand3  1        1      0      1

我找不到解决办法,哪怕是一个错误的办法。你知道吗

所以,希望能得到你的帮助


Tags: 数据idindex错误nanbad样本good
3条回答

下面是一种使用^{}^{}的方法:

(df.melt(id_vars='Id')
 .pivot_table(index='variable',
              columns='value',
              aggfunc='count',
              fill_value=0))

[输出]

          Id                      
value    Bad Good VeryBad VeryGood
variable                          
Brand1     1    1       1        0
Brand2     0    3       0        0
Brand3     1    0       1        1

选择所有不带first by ^{}的列,然后按value_counts计算值,替换不匹配的缺失值,转换为整数,转置和last for列的更改顺序使用reindex

cols = ['VeryBad','Bad','Good','VeryGood']
df = df.iloc[:, 1:].apply(pd.value_counts).fillna(0).astype(int).T.reindex(cols, axis=1)
print (df)
        VeryBad  Bad  Good  VeryGood
Brand1        1    1     1         0
Brand2        0    0     3         0
Brand3        1    1     0         1

让我们做两个步骤:melt+crosstab

s=df.melt(['Id','Index'])
yourdf=pd.crosstab(s.variable,s.value)
yourdf
value     Bad  Good  VeryBad  VeryGood
variable                              
Brand1      1     1        1         0
Brand2      0     3        0         0
Brand3      1     0        1         1

相关问题 更多 >

    热门问题