熊猫:如何在重复数据删除时创建“主”记录

时间:2017-11-11 17:26:43

标签: python pandas dataframe pandas-groupby

下面的示例pandas数据框 -

ID  ADDRESS       COLUMN1  COLUMN2  COLUMN3  
1   123 FRONT ST  2017  
1   123 FRONT ST           2016
1   123 FRONT ST                     2018
2   324 2nd st    2008
2   324 2nd st              2014

我的目标是对上面的数据帧进行重复数据删除,但对于“COLUMN1 - COLUMN3”,如果字段在最终结果中不为空,我想保留这些值。几乎都在寻找为每个ID创建“主”记录的方法(地址和ID将始终相同)。

目标结果是 -

ID  ADDRESS       COLUMN1  COLUMN2  COLUMN3  
1   123 FRONT ST  2017      2016    2018
2   324 2nd st    2008      2014

2 个答案:

答案 0 :(得分:2)

df.groupby('ID').first()
Out[156]: 
       ADDRESS  COLUMN1  COLUMN2  COLUMN3
ID                                       
1   123FRONTST   2017.0   2016.0   2018.0
2     3242ndst   2008.0   2014.0      NaN

答案 1 :(得分:1)

使用groupby + lastmaxminsumfirst

df = df.groupby(['ID','ADDRESS'], as_index=False).max()
print (df)
   ID       ADDRESS  COLUMN1  COLUMN2  COLUMN3
0   1  123 FRONT ST   2017.0   2016.0   2018.0
1   2    324 2nd st   2008.0   2014.0      NaN

如果没有必要,稍后处理可以转换为object

df = df.groupby(['ID','ADDRESS'], as_index=False).max().astype(object)
print (df)
  ID       ADDRESS COLUMN1 COLUMN2 COLUMN3
0  1  123 FRONT ST    2017    2016    2018
1  2    324 2nd st    2008    2014     NaN