python - 根据列值删除重复项
问题描述
我有一个看起来像这样的数据框:
timestamp | expectedValue | value | name
2020-04-01T00:00:00Z 0 | 231 | a
2020-04-01T00:00:00Z 1 | 324 | a
2020-04-01T00:00:00Z 0
2020-04-02T00:00:00Z 0
2020-04-02T00:00:00Z 1
我想删除具有 0 作为 expectedValue 的重复项并保留另一个。
最好的方法是什么?
问候
解决方案
您可以使用以下代码行获得您期望的内容:
df = df.iloc[df.expectedValue.ne(1).argsort(kind='mergesort')].drop_duplicates(['timestamp'])
它按时间戳列删除重复项,并仅返回值列不同于 0 的行。
玩具示例代码
下面的玩具示例代码按您的预期工作:
import pandas as pd
import numpy as np
df = pd.DataFrame([\
["2020-04-01T00:00:00Z",0,231,"a"],\
["2020-04-01T00:00:00Z",1,324,"a"],\
["2020-04-01T00:00:00Z",0,np.nan,np.nan],\
["2020-04-02T00:00:00Z",0,np.nan,np.nan],\
["2020-04-02T00:00:00Z",1,np.nan,np.nan]],\
columns=["timestamp","expectedValue","value","name"])
df = df.iloc[df.expectedValue.ne(1).argsort(kind='mergesort')].drop_duplicates(['timestamp'])
结果是:
In [40]: df
Out[40]:
timestamp expectedValue value name
1 2020-04-01T00:00:00Z 1 324.0 a
4 2020-04-02T00:00:00Z 1 NaN NaN
推荐阅读
- python - 使用 iterrows(),从数据帧的单行插入列的子集作为另一个数据帧中的新行
- ios - ld:找不到-lFirebaseCore clang的库:错误:链接器命令失败,退出代码为1(使用-v查看调用)
- hugo - Hugo:.Data.Pages 在 Blog.html 上下文中工作,但在另一个上下文中失败
- sql - Teradata 中的 instr 函数出错
- javascript - 一种在 .config 目录中对配置文件进行分组的方法
- wordpress - 当我使用稳定页面作为博客主页时,如何访问 wordpress 博客文章 url?
- html - 无法为容器流体设置背景颜色
- android - 在 ExoPlayer 中旋转时从相同位置恢复播放
- python-3.x - 我无法安装 tensorflow=1.4.1
- javascript - 使用纯 JavaScript 将 HTML 表单序列化为 JSON