我连接了两个相似的数据框,它们具有很多重复的值,因为它们基本上是相同的数据集,但使用的年份不同。
问题在于,其中一组缺少某些值,而另一组有时具有这些值。
例如:
Name Unit Year Level
Nik 1 2000 12
Nik 1 12
John 2 2001 11
John 2 2001 11
Stacy 1 8
Stacy 1 1999 8
.
.
我想在
subset = ['Name', 'Unit', 'Level']
上删除重复项,因为某些重复项没有年份。但是,我留下了没有
Year
的数据,我想保留这些值的数据:Name Unit Year Level
Nik 1 2000 12
John 2 2001 11
Stacy 1 1999 8
.
.
如何保留这些值而不是空白?
最佳答案
将sort_values
与默认参数na_position='last'
一起使用,因此应省略,然后drop_duplicates
:
print (df)
Name Unit Year Level
0 Nik 1 NaN 12
1 Nik 1 2000.0 12
2 John 2 2001.0 11
3 John 2 2001.0 11
4 Stacy 1 NaN 8
5 Stacy 1 1999.0 8
subset = ['Name', 'Unit', 'Level']
df = df.sort_values('Year').drop_duplicates(subset)
要么:
df = df.sort_values(subset + ['Year']).drop_duplicates(subset)
print (df)
Name Unit Year Level
5 Stacy 1 1999.0 8
1 Nik 1 2000.0 12
2 John 2 2001.0 11
带有
GroupBy.first
的另一个解决方案,用于按组返回第一个不丢失的Year
值:df = df.groupby(subset, as_index=False, sort=False)['Year'].first()
print (df)
Name Unit Level Year
0 Nik 1 12 2000.0
1 John 2 11 2001.0
2 Stacy 1 8 1999.0
关于python - 删除重复的行但保留某些值Pandas,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54219106/