【问题标题】:python pandas - merge multiple column with complementary row [duplicate]python pandas - 将多列与互补行合并[重复]
【发布时间】:2019-03-25 17:16:12
【问题描述】:

数据框示例:

    col1, col2, col3
1     v1
2     v2
3           v3
4           v4
5                 v5
6                 v6

我想将 col1, col2, col3 合并到新列,如下所示:

    col_new
1      v1
2      v2
3      v3
4      v4
5      v5
6      v6

如果数据框是以下格式:

    col1, col2, col3
1     v1          v7
2     v2
3           v3
4           v4
5                 v5
6                 v6

然后,我将合并这三列。根据三栏不完全互补。 (行 - 索引 1)


目前,我的方法将三列转换为列表并通过 zip(col1,col2,col3) 组合。然后,检查列表中的每个迭代 - [x[iteration] for x in list(zip(col1,...))]

"Not Null" 项在每次迭代中是否只有一个 (=1)?但这似乎是一种低效的方式。

有什么有效的方法可以满足我的要求吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用:

    df = df.fillna('').sum(axis=1)
    
    # 0    v1
    # 1    v2
    # 2    v3
    # 3    v4
    # 4    v5
    # 5    v6
    

    【讨论】:

    • 感谢您的回复。当所有列中的行互补时,您的答案可以完美合并。但是如果同一行有两个值,有没有办法检测和避免合并这三列?
    • @tplandeer 试试df.fillna('').apply(lambda x: ','.join(x),1).str.strip(',').str.split(',,').apply(pd.Series)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2017-03-13
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    相关资源
    最近更新 更多