繁体   English   中英

如何从两列创建一个虚拟数据框?

[英]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

左上角的10是原始数据框中列的名称; 它们成为结果的索引和列的名称。 如果不需要它们:

>>> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM