熊猫-如何合并具有空白列的行

时间:2019-08-01 01:18:15

标签: python pandas csv merge

我正在尝试使用pandas(对我来说是新来的)将类似的CSV行合并/合并为单行,但似乎无法弄清楚。如果其他Python解决方案更好/更容易,则欢迎他们使用。

关于使用熊猫进行合并/合并的文章很多,但是我看到的是在合并行时对值进行求和或合并,而不是在合并时将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 个答案:

答案 0 :(得分:1)

您可以使用first

进行检查
df=df.groupby(['col1','col2','col3']).first().reset_index()
df
  col1 col2 col3  col4  col5  col6
0    A    B    D   6.0  20.0  44.0
1    A    B    E   8.0  22.0  46.0
2    A    B    F  10.0  24.0  48.0
3    A    B    G   NaN   NaN  50.0
4    A    C    D   6.0  20.0  44.0
5    A    C    E   8.0  22.0  46.0
6    A    C    F  10.0  24.0  48.0
7    H    I    D  12.0  26.0  52.0
8    H    I    J  14.0  28.0  54.0
9    H    I    K  16.0  30.0  56.0