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

时间:2019-07-11 21:09:39

标签: python pandas pivot-table data-science

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

  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

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令:

其中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