对除当前值之外的所有项执行交叉转换

Perform cross transformations for all except current value

我有以下数据集:

ID  Animal
1   Dog
1   Cat
1   Turtle
2   Turkey
2   Dog
2   Cat
3   Tiger
3   Antelope

我的目标基本上是创建一个交叉表,但是我想将 ID 和动物的每个组合都视为唯一 ID,这样我会得到以下输出。

不幸的是,我正在使用 python2.7,所以它必须与那里兼容。

尝试 .get_dummiesjoin 结果到数据帧

df.join(pd.get_dummies(df.Animal))



    ID    Animal  Antelope  Cat  Dog  Tiger  Turkey  Turtle
0   1       Dog         0    0    1      0       0       0
1   1       Cat         0    1    0      0       0       0
2   1    Turtle         0    0    0      0       0       1
3   2    Turkey         0    0    0      0       1       0
4   2       Dog         0    0    1      0       0       0
5   2       Cat         0    1    0      0       0       0
6   3     Tiger         0    0    0      1       0       0
7   3  Antelope         1    0    0      0       0       0

先用pivot再用concat填充

df = pd.concat([df,df.pivot(columns='animal',values='animal').notnull().astype('int').fillna(0)],axis=1)
print(df)