[英]How to create a dummy dataframe from two columns?
假设我有数据框:
a|stg1
a|stg2
a|stg3
b|stg2
b|stg3
c|stg1
我想得到一个像这样的假人的数据框:
stg1|stg2|stg3
a| 1 | 1 | 1
b| 0 | 1 | 1
c| 1 | 0 | 0
我曾尝试使用 Pandas 的 get_dummies,但它并没有解决问题我还尝试创建一个带有两个 for 循环的字典,广告即使它有效,它也需要永远,并且必须有一个更优雅和有效的解决方案为了那个原因。
或者它更像是一个数据透视表之类的东西? 但是我应该使用什么功能呢? 每个值对都是唯一的
您可以使用pd.crosstab
默认情况下形成频率表:
# 0 is the column name of `a, b, c` and 1 is that of `stg*`
>>> res = pd.crosstab(df[0], df[1])
>>> res
1 stg1 stg2 stg3
0
a 1 1 1
b 0 1 1
c 1 0 0
左上角的1
和0
是原始数据框中列的名称; 它们成为结果的索引和列的名称。 如果不需要它们:
>>> res = res.rename_axis(index=None, columns=None)
>>> res
stg1 stg2 stg3
a 1 1 1
b 0 1 1
c 1 0 0
您可以使用通用数据透视表(“A”和“B”是您的列名):
pv = pd.pivot_table(df, index='A', columns='B', aggfunc='size', fill_value=0)
pv.index.name=None
pv.columns.name=None
print(pv)
输出:
stg1 stg2 stg3
a 1.0 1.0 1.0
b 0.0 1.0 1.0
c 1.0 0.0 0.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.