首页 > 解决方案 > 如何旋转行的唯一值并标记其出现?

问题描述

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

  1. 当 df 仅包含一个维度时,如何旋转 df 以使 col 值成为列?

  2. 以及如何进行以便在由这些行值 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

标签: pythonpandaspivot-tabledata-science

解决方案


你可以使用这个命令:

哪里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

推荐阅读