2017-11-11 65 views
1

例大熊猫据帧 -熊猫:去欺骗时,如何创建一个“主”记录下面

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 - 栏3”我要继续如果该字段在最终结果中不为null,则返回值。非常希望能够为每个ID创建一个“主”记录(地址和ID始终相同)。

目标结果是这样的 -

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

我敢肯定你正在寻找'df.groupby([ 'ID', '地址'])MAX()'。 –

回答

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

使用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