【问题标题】:KeyError: '[17] not found in axis'KeyError: '[17] 未在轴中找到'
【发布时间】:2022-06-16 00:07:51
【问题描述】:

我尝试使用我的索引将 raws 放入我的数据框中,但我在 raw 17 中遇到了问题。

这是我的代码:

for i in range(len(tweets_df1)):
    if tweets_df1.iloc[i]['Text'].find('https') != -1:
        print(i)
        tweets_df1.drop(index=i,axis=0)  

但我在 df.drop 的最后一行有这个错误,我不知道为什么。如果你知道你的解决方案,那将会很有帮助。

这是文本数据框:

使用无人机在一小时或更短的时间内交付数千件日常用品。今年晚些时候在加利福尼亚州洛克福德起飞。 '链接 1' '链接 2'

【问题讨论】:

  • 你也可以显示df吗?好像没有索引 17
  • 你的数据框是什么样的?它实际上是否有索引标签17
  • 嗨,是的,第 17 行有一个索引,其中包含文本和指向它的链接
  • 如果在循环之前运行tweets_df1=tweets_df1.reset_index() 会怎样?你还有问题吗?
  • 成功了,谢谢!

标签: python pandas dataframe


【解决方案1】:

我认为这不会达到您的预期。 df.drop 默认不是就地操作。所以循环不会删除这些索引。但是如果你放弃了它们,你会在使用 iloc 时遇到麻烦,因为你在循环期间改变了数据框的形状。我认为您正在寻找的是:

for i in tweets_df1.index:
    if tweets_df1.loc[i, 'Text'].find('https') != -1:
        print(i)
        tweets_df1.drop(index=i,axis=0, inplace=True)

也就是说,在这样的 for 循环中调整大小是非常低效的。最好使用 pandas string methods 以矢量化方式执行此操作:

tweets_filtered = tweets_df1[
    tweets_df1.Text.str.contains('https')
]

【讨论】:

    猜你喜欢
    • 2019-11-15
    • 2020-04-24
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多