我有一个如下所示的数据框:
df = pd.DataFrame({"piece": ["piece1", "piece2", "piece3", "piece4"], "No": [1, 1, 2, 3]})
No piece
0 1 piece1
1 1 piece2
2 2 piece3
3 3 piece4
我有一个系列,其索引对应于数据框中的“No”列。它将布尔变量分配给“No”值,如下所示:
s = pd.Series([True, False, True, True])
0 True
1 False
2 True
3 True
dtype: bool
我想从数据框中选择那些行,其中“No”-value为True。这应该导致
No piece
2 2 piece3
3 3 piece4
我用df [“No”]尝试了很多索引.isin(s),或类似df [s [“No”] == True] ......但它还没有用。
答案 0 :(得分:4)
我认为您需要map
No
列true/false
条件中的df[df.No.map(s)]
# No piece
#2 2 piece3
#3 3 piece4
值,并将其用于子集化:
df.No.map(s)
# 0 False
# 1 False
# 2 True
# 3 True
# Name: No, dtype: bool
{ "index": { "_id": 1 }}
{ "text": "Sue ate the alligator" }
{ "index": { "_id": 2 }}
{ "text": "The alligator ate Sue" }
{ "index": { "_id": 3 }}
{ "text": "Sue never goes anywhere without her alligator skin purse" }
答案 1 :(得分:3)
您正尝试使用s
为df['No']
编入索引,然后将结果用作df
本身的掩码:
df[s[df['No']].values]
需要使用values
将最终掩码提取为数组,因为索引中的重复项会导致错误。