Python Pandas在数据框中合并相同的名称列

发布于 2021-01-29 17:29:06

因此,我有一些要使用的CSV文件,但其中有些文件包含多个具有相同名称的列。

例如我可以有一个这样的csv:

ID   Name   a    a    a     b    b
1    test1  1    NaN  NaN   "a"  NaN
2    test2  NaN  2    NaN   "a"  NaN
3    test3  2    3    NaN   NaN  "b"
4    test4  NaN  NaN  4     NaN  "b"

加载到熊猫给我这个:

ID   Name   a    a.1  a.2   b    b.1
1    test1  1    NaN  NaN   "a"  NaN
2    test2  NaN  2    NaN   "a"  NaN
3    test3  2    3    NaN   NaN  "b"
4    test4  NaN  NaN  4     NaN  "b"

我想做的是将这些相同名称的列合并为1列(如果有多个值将这些值分开),而我的理想输出是

ID   Name   a      b  
1    test1  "1"    "a"   
2    test2  "2"    "a"
3    test3  "2;3"  "b"
4    test4  "4"    "b"

那么想知道这是否可能吗?

关注者
0
被浏览
184
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以groupby在上使用axis=1,并尝试类似

    >>> def sjoin(x): return ';'.join(x[x.notnull()].astype(str))
    >>> df.groupby(level=0, axis=1).apply(lambda x: x.apply(sjoin, axis=1))
      ID   Name        a  b
    0  1  test1      1.0  a
    1  2  test2      2.0  a
    2  3  test3  2.0;3.0  b
    3  4  test4      4.0  b
    

    除了使用之外.astype(str),您还可以使用所需的任何格式运算符。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看