我试图过滤一个 Dataframe 并认为如果 aloc将布尔列表作为过滤器的输入,它也应该适用于iloc. 例如。
import pandas as pd
df = pd.read_csv('https://query.data.world/s/jldxidygjltewualzthzkaxtdrkdvq')
df.iloc[[True,False,True]] #works
df.loc[[True,False,True]] #works
df.loc[df['PointsPerGame'] > 10.0] #works
df.iloc[df['PointsPerGame'] > 10.0] # DOES NOT WORK
Run Code Online (Sandbox Code Playgroud)
文档指出 和 都loc接受iloc布尔数组作为参数。
所以,我相信这不起作用纯粹是因为它没有实现,或者这是因为我无法理解的其他原因?
这不是错误:
这是根据定义不允许的。.iloc纯粹是位置性的,因此与传递的 Series 对齐是没有意义的(这是所有索引操作所做的)。
您需要将 mask 转换为 numpy 数组iloc,因为loc它也可以工作,但不是必需的:
df.iloc[(df['PointsPerGame'] > 10.0).values]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |