【问题标题】:Pandas Get_dummies for nested tables用于嵌套表的 Pandas Get_dummies
【发布时间】:2015-09-24 04:35:19
【问题描述】:

我希望利用 pandas get_dummy() 功能来编码一组(相当广泛的)分类变量。但是,数据当前是嵌套表格式。这意味着每一行代表另一个变量实例,例如

Instance, Cat_Col
1, John
1, Smith
2, Jane
3, Joe

现在我可以生成唯一变量的完整列表,我可以使用它来获取代表所有可能值的 get_dummies。但是,以这种新格式将嵌套表转换为单个实例行给我带来了一些麻烦。

非常感谢任何帮助 谢谢

编辑: 对于 Cat_col 的所有值,每个实例都应该有一个虚拟编码结果

这个想法是这样的结果是一个单一的特征向量

Instance,Col_John,Col_Smith,Col_Jane,Col_Joe
1,1,1,0,0
2,0,0,1,0
3,0,0,0,1

我相信这是正确的编码,假设我们正在做 1-hot 编码

【问题讨论】:

  • 您是否需要为每个独特的“Instance”或“Cat_Col”或两者的某种组合使用一个假人?您的示例的虚拟结果是什么样的?
  • @StefanJansen 上面的问题已经更新

标签: python pandas


【解决方案1】:

您可能需要考虑使用pivot_table 来实现您的目标。

import pandas as pd

df

Out[10]: 
   Instance Cat_Col
0         1    John
1         1   Smith
2         2    Jane
3         3     Joe

df['count'] = 1
df.pivot('Instance', 'Cat_Col', 'count').fillna(0)

Out[11]: 
Cat_Col    Jane   Joe   John   Smith
Instance                            
1             0     0      1       1
2             1     0      0       0
3             0     1      0       0

如果您更喜欢使用get_dummies

result = pd.get_dummies(df.Cat_Col)
result['Instance'] = df.Instance
result = result.set_index('Instance')
result.groupby(level=0).apply(max)

Out[26]: 
           Jane   Joe   John   Smith
Instance                            
1             0     0      1       1
2             1     0      0       0
3             0     1      0       0

【讨论】:

  • 这看起来不错,我唯一担心的是这只是重新格式化表格,并没有像 pandas get_dummies 那样灵活地编码新条目(见链接)stackoverflow.com/questions/28465633/…
  • @user1874538 我已更新代码以使用get_dummies。看一看。 :-)
  • 完善这正是我所寻找的,很好地利用了最大值,因为它们都是 1。 (作为一个侧节点,如果 Cat_col 不是唯一的,则上面的枢轴示例不起作用)
猜你喜欢
  • 2021-08-11
  • 2016-09-19
  • 1970-01-01
  • 2015-09-27
  • 2013-08-19
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多