我有两列数据集想要重塑。
看着这个假的df:
df=pd.DataFrame([
['Alex', 'Apple'],['Bob', 'Banana'],['Clark', 'Citrus'], ['Diana', 'Banana'], [
'Elisa', 'Apple'], ['Frida', 'Citrus'], ['George', 'Citrus'], ['Hanna', 'Banana']
],columns=['Name', 'Fruit'])
我想有四列;名称,苹果,香蕉和柑橘,其中三个是布尔值(对/错)。
我已经看过整张纸,但实际上并不是我想要的。
答案 0 :(得分:3)
我认为这应该是get_dummies
的好用例:
df.set_index('Name')['Fruit'].str.get_dummies().astype(bool).reset_index()
Name Apple Banana Citrus
0 Alex True False False
1 Bob False True False
2 Clark False False True
3 Diana False True False
4 Elisa True False False
5 Frida False False True
6 George False False True
7 Hanna False True False
类似地,我们有
pd.concat([df['Name'], df['Fruit'].str.get_dummies().astype(bool)], axis=1)
Name Apple Banana Citrus
0 Alex True False False
1 Bob False True False
2 Clark False False True
3 Diana False True False
4 Elisa True False False
5 Frida False False True
6 George False False True
7 Hanna False True False
答案 1 :(得分:2)
您可以使用以下内容:
df[['Name']].join(pd.get_dummies(df.Fruit).astype(bool))
Name Apple Banana Citrus
0 Alex True False False
1 Bob False True False
2 Clark False False True
3 Diana False True False
4 Elisa True False False
5 Frida False False True
6 George False False True
7 Hanna False True False
答案 2 :(得分:2)
好像crosstab
很好
pd.crosstab(df.Name,df.Fruit).astype(bool).reset_index()
Out[90]:
Fruit Name Apple Banana Citrus
0 Alex True False False
1 Bob False True False
2 Clark False False True
3 Diana False True False
4 Elisa True False False
5 Frida False False True
6 George False False True
7 Hanna False True False