我正在寻找以下情况的解决方案:
-
如何透视 df 以使 col 值在 df 仅包含一个维度时成为列?
以及如何继续,以便根据前一列中每行 的出现次数,从这些行值 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