使用熊猫在数据框中创建动态列
问题描述:
如何从此熊猫数据框中创建动态列。使用熊猫在数据框中创建动态列
Name, Sex
a, M
b, F
c, M
d, F
预期的数据帧:
Name, M, F
a, 1, 0
b, 0, 1
c, 1, 0
d, 0, 1
我已经试过pandas.pivot(),但没有用的,可能你们提出好的建议。
答
使用得到的假人:
pd.concat([df['Name'], df['Sex'].str.get_dummies()], axis=1)
Out:
Name F M
0 a 0 1
1 b 1 0
2 c 0 1
3 d 1 0
df['Sex'].str.get_dummies()
产生的假人:
df['Sex'].str.get_dummies()
Out:
F M
0 0 1
1 1 0
2 0 1
3 1 0
,然后你可以使用pd.concat到结果的名称列相结合。
答
您可以创建基于两列计数变量,然后进行旋转,这样的:
import pandas as pd
df.groupby(["Name", "Sex"]).size().unstack(level = 1, fill_value = 0)
# Sex F M
#Name
# a 0 1
# b 1 0
# c 0 1
# d 1 0
另一种选择是使用crosstab
从pandas
:
import pandas as pd
pd.crosstab(df['Name'], df['Sex'])
# Sex F M
#Name
# a 0 1
# b 1 0
# c 0 1
# d 1 0