私信  •  关注

Jeff Ellen

Jeff Ellen 最近创建的主题
Jeff Ellen 最近回复了

我刚刚尝试编辑这个,但我没有登录,所以我不确定我的编辑去了哪里。我试图合并多种选择。所以我认为一个更好的答案是:

对于单个值,最直接(人类可读)的可能是:

df.loc[df['column_name'] == some_value]

对于值列表,还可以使用:

df.loc[df['column_name'].isin(some_values)]

例如,

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      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8
# 5  bar    two  5  10
# 6  foo    one  6  12
# 7  foo  three  7  14

print(df.loc[df['A'] == 'foo'])

产量

     A      B  C   D
0  foo    one  0   0
2  foo    two  2   4
4  foo    two  4   8
6  foo    one  6  12
7  foo  three  7  14

如果要针对多个条件进行选择,可以将它们放入列表中并使用“isin”:

print(df.loc[df['B'].isin(['one','three'])])

产量

      A      B  C   D
0  foo    one  0   0
1  bar    one  1   2
3  bar  three  3   6
6  foo    one  6  12
7  foo  three  7  14

但是,请注意,如果您希望多次这样做,那么首先创建索引,然后使用df.loc会更有效:

df = df.set_index(['A'])
print(df.loc['foo'])

产量

  A      B  C   D
foo    one  0   0
foo    two  2   4
foo    two  4   8
foo    one  6  12
foo  three  7  14