如何透视行的唯一值并标记其出现次数?



我正在寻找以下情况的解决方案:

  1. 如何透视 df 以使 col 值在 df 仅包含一个维度时成为列?

  2. 以及如何继续,以便根据前一列中每行
  3. 的出现次数,从这些行值 0 或 1 组成的每列中产生结果?

说明起来会更容易。所以从这种数据框:

df =
DATA   
cat1
dog1
cat2
dog2
cat3
dog3
...   

对于此类数据框:

df =
Animal   cat1   dog1   cat2   dog2   cat3   dog3    ...
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...
cat2    0      0      1      0      0      0        ...
dog2    0      0      0      1      0      0        ...
cat3    0      0      0      0      1      0        ...
dog3    0      0      0      0      0      1        ...
...   
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...

首先,我尝试收集所有唯一值,然后将其重新塑造为pd.DataFrame,因为它是一个 np 数组。然后我尝试使用枢轴。我知道它应该有"索引"、"列"和"值"等参数,但就我而言,我只有一个维度(只有一列(。

to_reschape = df.Animal.unique()
type(to_reschape)
dataset = pd.DataFrame(to_reschape)
dataset.pivot()
KeyError: None

您可以使用以下命令:

其中 df,

   DATA
0  cat1
1  dog1
2  cat2
3  dog2
4  cat3
5  dog3
6  dog1

pd.get_dummies(df.set_index(df.DATA), prefix='', prefix_sep='')

输出:

      cat1  cat2  cat3  dog1  dog2  dog3
DATA                                    
cat1     1     0     0     0     0     0
dog1     0     0     0     1     0     0
cat2     0     1     0     0     0     0
dog2     0     0     0     0     1     0
cat3     0     0     1     0     0     0
dog3     0     0     0     0     0     1
dog1     0     0     0     1     0     0

最新更新