熊猫:去欺骗时,如何创建一个“主”记录下面
问题描述:
例大熊猫据帧 -熊猫:去欺骗时,如何创建一个“主”记录下面
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
答
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
答
使用groupby
+ last
或 max
或min
或sum
或first
:
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
我敢肯定你正在寻找'df.groupby([ 'ID', '地址'])MAX()'。 –