python – 使用不同长度的布尔系列从数据框中选择行

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

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] ……但它还没有用.

最佳答案 我认为您需要将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
点赞