Python Pandas在数据帧中合并相同的名称列
发布时间:2020-12-20 12:31:21 所属栏目:Python 来源:网络整理
导读:所以我有一些我正在尝试使用的CSV文件,但是其中一些文件具有多个具有相同名称的列. 例如,我可以有这样的csv: ID Name a a a b b1 test1 1 NaN NaN "a" NaN2 test2 NaN 2 NaN "a" NaN3 test3 2 3 NaN NaN "b"4 test4 NaN NaN 4 NaN "b" 加载到pandasis给我这
所以我有一些我正在尝试使用的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" 加载到pandasis给我这个: 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" 所以想知道这是否可行? 解决方法
你可以在axis = 1上使用groupby,并尝试类似的东西
>>> 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),你可以使用你想要的任何格式化运算符. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |