与任何关系数据库一样,您可能需要根据特定列中的值从 DataFrame 中选择某些行。要在 Pandas 中无缝实现此目的,您可以使用多种方法。
要检索列值与特定值匹配的行,请利用 == 运算符:
df.loc[df['column_name'] == some_value]
相反,如果您希望选择列值属于值集合的行,请使用isin:
df.loc[df['column_name'].isin(some_values)]
要组合您选择的多个条件,请用 & 连接它们:
df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]
注意: 此处的括号对于确保正确评估至关重要。
要排除具有特定列值的行,请使用 !=:
df.loc[df['column_name'] != some_value]
或者,对于特定范围之外的值,使用 ~:
df = df.loc[~df['column_name'].isin(some_values)] # .loc is not in-place replacement否定 isin 结果
考虑以下内容DataFrame:
import pandas as pd import numpy as np df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(), 'B': 'one one two three two two one three'.split(), 'C': np.arange(8), 'D': np.arange(8) * 2}) print(df)
选择“A”值为“foo”的行:
print(df.loc[df['A'] == 'foo'])
选择“B”值为“一”或“三”的行:
print(df.loc[df['B'].isin(['one','three'])])
对于频繁的过滤操作,它更首先创建索引是高效的:
df = df.set_index(['B']) print(df.loc['one'])
或者,使用 df.index.isin:
df.loc[df.index.isin(['one','two'])]
以上是如何根据列值高效地选择 Pandas DataFrame 中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!