【问题标题】:Pandas - Aggregating several columns into onePandas - 将几列聚合为一列
【发布时间】:2020-03-06 03:50:38
【问题描述】:

我有一个包含多个分类列的数据框,我想将所有这些汇总到一个分类列中,最好使用 Pandas。

例如,如果我有两列,分别命名为 category1 (c1) 和 category2 (c2),它们的数据范围都在 0 到 2 之间,我想将它们聚合到其他列 category (c) 中,这可以范围从 0 到 5,表示所有可能的分类值组合。

我会从这里开始:

d1 d2 c1 c2
1  1  NA 0
2  1  1  1
3  1  0  2
4  2  2  NA
5  1  NA NA
6  2  2  2
7  2  0  NA
8  2  0  2

到这里:

d1 d2 c
1  1  0
2  1  1
3  1  2
4  2  3
5  1  4
6  2  5 
7  2  6
8  2  2

我尝试关注this,但它似乎不起作用并引发了一些错误,即 ValueError: cannot reindex from a duplicate axis。

我提前感谢任何帮助。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    IIUC,您可以将ngroupgroupby 一起使用。

    df['c'] = df.fillna(-1).groupby(['c1', 'c2']).ngroup()
    

    顺序可能是任意的(即与您的不同),但希望这并不重要。


       d1  d2  c
    0   1   1  1
    1   2   1  4
    2   3   1  3
    3   4   2  5
    4   5   1  0
    5   6   2  6
    6   7   2  2
    7   8   2  3
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多