【发布时间】:2019-12-09 13:24:46
【问题描述】:
我正在尝试使用 pandas(对我来说是新手)将相似的 CSV 行合并/合并为一行,但似乎无法弄清楚。如果其他 python 解决方案更好/更容易,我愿意接受。
有很多关于使用 pandas 进行合并/合并的帖子,但我看到的帖子是在合并行时对值进行求和或合并,而不是在合并时将 null 替换为值。我尝试使用 df.drop_duplicates 但这些行并不是真正重复的,所以它没有做任何事情。
CSV 格式:
col1 col2 col3 col4 col5 col6
A B D 6 null null
A B E 8 null null
A B F 10 null null
A B D null 20 null
A B E null 22 null
A B F null 24 null
A B D null null 44
A B E null null 46
A B F null null 48
A B G null null 50
A C D 6 null null
A C E 8 null null
A C F 10 null null
A C D null 20 null
A C E null 22 null
A C F null 24 null
A C D null null 44
A C E null null 46
A C F null null 48
H I D 12 null null
H I J 14 null null
H I K 16 null null
H I D null 26 null
H I J null 28 null
H I K null 30 null
H I D null null 52
H I J null null 54
H I K null null 56
预期/需要的输出:
col1 col2 col3 col4 col5 col6
A B D 6 20 44
A B D 8 22 46
A B D 10 24 48
A B G null null 50
A C D 6 20 44
A C D 8 22 46
A C D 10 24 48
H I D 12 26 52
H I J 14 28 54
H I K 16 30 56
【问题讨论】:
-
如果您确定第 1,2 和 3 列的每个组合的值是唯一的;您可以尝试 groupby 和 sum 或 max。 new_df = df.groupby(['col1', 'col2', 'col3'], as_index = False).max()
-
谢谢@Vaishali!这似乎奏效了。