python - Pandas 选择具有特定条件的数据

标签 python pandas dataframe

我有一个如下所示的数据框:

item    storage
record  paper
record  laptop
record  desktop
file    laptop
file    paper
file    paper
record  desktop
file    desktop

如果我想要一个具有 2 个条件的新数据框,例如项目列中的“记录”和存储列中的“笔记本电脑”或台式机,是否有更简单的方法来选择此数据集而不是:

df1=df[(df['item'] == 'record') &  (df['storage'] == 'laptop')]
df2=df[(df['item'] == 'record') &  (df['storage'] == 'desktop')]
df3= pd.concat([df1, df2], axis=1)

是否有更短的方法可以在一行中执行此操作,例如:

df3=df[(df['item'] == 'record') &  (df['storage'] == 'laptop' or 'desktop')] #This does not work

最佳答案

您可以将其中一个条件更改为.isin:

>>> df['storage'].isin(['laptop', 'desktop'])

所以:

>>> df[(df['item'] == 'record') & (df['storage'].isin(['laptop', 'desktop']))]
     item  storage
1  record   laptop
2  record  desktop
6  record  desktop

关于python - Pandas 选择具有特定条件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24609324/

相关文章:

python - 在 Python 中计算 3D 网格的边界球

python - 在 python 中高效地为 NetworkX 创建边

python - 根据组的频率计数添加新列

python - 使用 matplotlib 从数据帧绘制向量?

r - 在循环中汇总并生成多个变量

python - pandas 中行之间的减法 - python

python - OpenCv 视频显示 PyQt5

python - 如何保持行元素之间变化的累积计数,忽略 NaN,并使用结果创建单独的列

python - 将 URL 请求从 JSON 转换为 Pandas DataFrame

最小元素的行名