我正在寻找以下案件的解决方案:
当df仅包含一维时,如何旋转df以使col值成为列?
以及如何进行处理,以使由这些行值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
答案 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