【问题标题】:How to pivot a pandas dataframe such that unique values across multiple columns become new columns?如何旋转熊猫数据框,使多列中的唯一值成为新列?
【发布时间】:2018-12-24 00:46:44
【问题描述】:

我有一个如下形式的熊猫数据框:

df

    col_1      col_2      col_3      col_4
ID
1     A          B          C          A
2     B          D
3     A          C          B

df = pd.DataFrame({'col_1':['A','B','A'], 'col_2':['B','D','C'], 'col_3':['C',np.NaN,'B'], 'col_4':['A', np.NaN, np.NaN]}, index=[1,2,3])

请注意,跨列重复的值并非偶然——它们指的是相同的实体(例如,col_1 中的 A 与 col_4 中的 A 相同)。我正在尝试旋转此数据框的值,以便这些唯一值成为新列。例如,df 会变成:

new_df

      A      B      C      D
ID
1     2      1      1      0
2     1      0      0      1
3     1      1      1      0

新值表示计数。我试过pd.get_dummies(),但它没有给我我想要的东西。实现此目的最直观的方法是什么?

【问题讨论】:

  • 你能添加代码来创建数据框吗
  • @DanielMesejo 完成!
  • 我相信@W-B 的回答可以解决你的问题

标签: python pandas numpy dataframe


【解决方案1】:

IIUC 使用 stackstr.get_dummies

df.stack().loc[lambda x : x!=''].str.get_dummies().sum(level=0)
    A  B  C  D
ID            
1   2  1  1  0
2   0  1  0  1
3   1  1  1  0

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2018-08-16
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多