【问题标题】:Create Dummies for Multiple Columns on Unique Value in a Column在列中的唯一值上为多列创建虚拟对象
【发布时间】:2021-07-28 18:31:05
【问题描述】:

我有一个如下所述的数据框,我有多个 CTI 和 RESOLUTION 类别,目标是为 CTI 和 RESOLUTION 类别以及没有此特定帐户条目的类别创建虚拟变量。

       ACCOUNT  |   CTI       |      RESOLUTION
        59737001    Data:HI         Customer Owned Issue / Customer Equipment
        59737001    Data:HI         Repaired / Replaced Drop Underground
        13847688    Data:OK         Not Repaired

我的预期输出是

    ACCOUNT  |  CTI_Data:HI | CTI_DATA:OK| RESOLUTION_Customer Owned... | RESOLUTION_Repaired/Repla.... | RESOLUTION_Not Repaired
     59737001      1         0                  1                          1                         0

我知道pd.get_dummies() 可用于获取多个类别的假人,但我的情况不同。 任何帮助表示赞赏

【问题讨论】:

  • 在您的预期输出中,CTI_Data:HFC:CBI 来自哪里?您在此处显示的原始数据中没有任何包含 HFC:CBI 的内容。
  • @scotscotmcc 抱歉,我解决了这个问题。
  • 另外,第一列是索引吗?您刚刚给了我们一些不按顺序排列的条目? 2、25012 和 213 是这样的吗?还是帐户中的那些部分是 8 个字符长?
  • @scotscotmcc 是的,这只是索引。
  • @scotscotmcc 我删除了索引,以便在理解问题时不会混淆。

标签: python pandas dataframe data-manipulation dummy-variable


【解决方案1】:

我相信您可以同时使用pd.get_dummies()df.groupby().any()groupby().any() 将返回 TRUE/FALSE,因此您以转换为 int 结束它

df2 = pd.get_dummies(df,columns=['CTI','RESOLUTION']) # df is what you have in your first example. Putting in the columns here restricts dummies to just those columns.
df2.groupby('ACCOUNT').any().astype(int)

【讨论】:

  • 它不会起作用,因为它也会以这种方式为 Account 创建假人并且 groupby 失败
  • 我想我的专栏可能与您略有不同,因为我们一开始就搞砸了索引的东西,把它拿出来并改变它等等。您应该能够通过在get_dummies() 中输入columns 参数来处理此问题。我现在正在更新上面的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 2014-11-13
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多