将两个重复的行合并为彼此的估算值

时间:2018-02-06 09:53:54

标签: python-2.7 pandas

我有一个数据帧(df1),只有一列(col1)具有相同的值,而其他列具有缺失值,例如如下:

df1
--------------------------------------------------------------------
   col1     col2            col3       col4       col5       col6
--------------------------------------------------------------------
0| 1234     NaT             120        NaN        115        XYZ
1| 1234     2015/01/12      120        Abc        115        NaN
2| 1234     2015/01/12      NaN        NaN        NaN        NaN

我想将具有相同col1值的三行合并为一行,以便将缺失值替换为存在值的其他行中的值,而不是缺失值。生成的df将如下所示:

 result_df
--------------------------------------------------------------------
   col1     col2            col3       col4       col5       col6
--------------------------------------------------------------------
0| 1234     2015/01/12      120        Abc        115        XYZ

任何人都可以帮我解决这个问题吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

首先删除列名col3col4中的重复项:

s = df.columns.to_series()
df.columns = (s + '.' + s.groupby(s).cumcount().replace({0:''}).astype(str)).str.strip('.')
print (df)
   col1       col2   col3 col4  col3.1 col4.1
0  1234        NaT  120.0  NaN   115.0    XYZ
1  1234 2015-01-12  120.0  Abc   115.0    NaN
2  1234 2015-01-12    NaN  NaN     NaN    NaN

然后汇总first

df = df.groupby('col1', as_index=False).first()
print (df)
   col1       col2   col3 col4  col3.1 col4.1
0  1234 2015-01-12  120.0  Abc   115.0    XYZ