pandas 相当于 R 根据逻辑条件取一个子集是什么?

What's the pandas equivalent of R take a subset based on a logical condition?

我想计算从 r 到 pandas 的等价物:

df$received[df$gender == 'F']

在pandas中,如果我使用:

df['received'][df['gender'] == 'F']

没用。

或者如果我尝试:

df['received'] & df['gender'] == 'F'

它给了我:unsupported operand type(s) for &: 'float' and 'bool'

看来你需要loc with boolean indexing:

df.loc[df['gender'] == 'F', 'received']

样本:

df = pd.DataFrame({'gender':['F','M','F'], 'received':[10,20,50]})
print (df)
  gender  received
0      F        10
1      M        20
2      F        50

print (df.loc[df['gender'] == 'F', 'received'])
0    10
2    50
Name: received, dtype: int64