首页 > 解决方案 > 使用链式条件过滤 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)

标签: pythonpython-3.xpandas

解决方案


如果需要删除丢失的行,请使用DataFrame.querywith 技巧进行比较 ifA相同A,因为np.nan != np.nan

df = pd.read_csv(filename, sep=";").query('A==A')

通过 callable 使用选择

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]

推荐阅读