is_avail valu data_source
2015-08-07 False 0.282 source_a
2015-08-07 False 0.582 source_b
2015-08-23 False 0.296 source_a
2015-09-08 False 0.433 source_a
2015-10-01 True 0.169 source_b
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,我想通过保留列中具有较高值的行来删除重复的行(即重复索引的行)valu。
我可以删除具有重复索引的行,如下所示:
df = df[~df.index.duplicated()]。但是如何根据上面指定的条件删除?
在按值对df排序后,可以对索引使用groupby。
df.sort_values(by='valu', ascending=False).groupby(level=0).first()
Out[1277]:
is_avail valu data_source
2015-08-07 False 0.582 source_b
2015-08-23 False 0.296 source_a
2015-09-08 False 0.433 source_a
2015-10-01 True 0.169 source_b
Run Code Online (Sandbox Code Playgroud)
drop_duplicates与使用keep='last'
df.rename_axis('date').reset_index() \
.sort_values(['date', 'valu']) \
.drop_duplicates('date', keep='last') \
.set_index('date').rename_axis(df.index.name)
is_avail valu data_source
2015-08-07 False 0.582 source_b
2015-08-23 False 0.296 source_a
2015-09-08 False 0.433 source_a
2015-10-01 True 0.169 source_b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |