df[booleanMask]和df.loc [booleanMask]都对我有效,但我不明白为什么。不使用.loc的简写df[]我认为应用于列,而我试图应用于行,所以我认为我需要使用.loc
下面是具体代码:
# Boolean operators
# All the games where a team scored at least 4 goals and won to nil
hw_4_0 = (pl23['FTHG'] >= 4) & (pl23['FTAG'] == 0)
aw_0_4 = (pl23['FTHG'] == 0) & (pl23['FTAG'] >= 4)
pl23.loc[aw_0_4 | hw_4_0]
例如,pl23.loc[aw_0_4| hw_4_0,:]也可以工作,但pl23.loc[:,aw_0_4| [hw_4_0]没有。我认为df[boolean mask]是后者的简写(和索引一样),那么为什么它在这个例子中起作用呢?
使用pl23.loc[aw_0_4| hw_4_0],它返回查询所针对的 Dataframe ,而我期望的是IndexingError:作为索引器提供的布尔系列不可对齐(布尔系列的索引和索引对象的索引不匹配)。
1条答案
按热度按时间7cwmlq891#
df[…]
vsdf.loc[…]
适用于列vs索引,当您使用标签时。如果你传递一个boolean Series(或其他iterable)来进行boolean索引,那么它们都作用于索引级别。要对列执行布尔索引,需要
df.loc[:, …]
示例: