python - 使用链式条件过滤 Pandas 中的行
问题描述
我有一个初始 csv 文件,其中包含我感兴趣的某些值,我想阅读它并同时过滤它。
该文件具有以下结构:
一种 | 乙 |
---|---|
25 | xx |
钠 | 年年 |
32 | Z Z |
25 | Z Z |
我通常做的是先阅读它,然后应用过滤器:
df = pd.read_csv(filename, sep=";")
df = df[df['A']==25]
我想知道是否可以以链式方式过滤它,例如:
df = pd.read_csv(filename, sep=";")\
.where('A'==25)
解决方案
如果需要删除丢失的行,请使用DataFrame.query
with 技巧进行比较 ifA
相同A
,因为np.nan != np.nan
:
df = pd.read_csv(filename, sep=";").query('A==A')
df = pd.read_csv(filename, sep=";").loc[lambda x: x.A.notna()]
如果需要测试其他值:
df = pd.read_csv(filename, sep=";").query('A==25')
或者:
df = pd.read_csv(filename, sep=";").loc[lambda x: x.A == 25]
推荐阅读
- laravel - 使用laravel 5.6登录时如何发送随机生成的数字以及电子邮件和密码
- d3.js - 为什么拖动回调中的 d3.event 与数据坐标有关
- php - 防止某人在上传表单和图像时刷新页面?
- android - 一些库更新后,Android 平台构建失败
- sass - 容器流体仅适用于台式机,仅适用于 lg 设备
- python - 加载库失败:cairo
- python - Pycharm 无法检测 django 频道
- elasticsearch - Elastic Search 如何选择列并通过过滤器?
- python - 对按一列分组并取决于其他列值的数据框列中的所有值求和
- android - 无法在 Play 商店中将已签名的 APK 投入生产。Andorid App Bundle 的问题