Pandas:使用iloc检索数据与输入索引不匹配

2024-04-23 06:50:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,其中包含参与者的id和参与者的消息。我想用相同的消息检索所有示例,比如contributor_message=='我支持这个建议,因为…'。在

我使用数据.loc[data.contributor_消息=='我支持此建议,因为…'].index->;因此基本上您可以使用相同的消息在数据帧中获取索引,例如这些索引是1、2、50、9350、30678,。。。在

然后我试过了数据.iloc[[1,2,50]]这给了我正确的答案,即索引与数据帧索引匹配。在

但是,当我使用数据.iloc[9350]或更高的索引,我将获得相应的数据帧索引。假设这次数据帧中有15047。在

有人能给我建议怎么解决这个问题吗?在


Tags: 数据答案gtid消息示例messagedata
1条回答
网友
1楼 · 发布于 2024-04-23 06:50:16

当索引没有与其整数位置对齐时,会发生这种情况。在

注意,^{}用于按索引切片,^{}用于按整数位置切片。在

下面是一个最小的例子。在

df = pd.DataFrame({'A': [1, 2, 1, 1, 5]}, index=[0, 1, 2, 4, 5])

idx = df[df['A'] == 1].index

print(idx)  # Int64Index([0, 2, 4], dtype='int64')

res1 = df.loc[idx]
res2 = df.iloc[idx]

print(res1)
#    A
# 0  1
# 2  1
# 4  1

print(res2)
#    A
# 0  1
# 2  1
# 5  5

你有两个选项来解决这个问题。在

选项1

使用pd.DataFrame.loc按索引切片,如上所示。在

选项2

重置索引并使用pd.DataFrame.iloc

^{pr2}$

相关问题 更多 >