当前位置: 首页 > 知识库问答 >
问题:

切片熊猫数据帧遇到关键错误:“n_tokens_content”,如何有效地定位坏行?

葛永丰
2023-03-14

我试图用Python 3.6.2中的熊猫0.20.3来探索这个数据集。

%pylab inline
import pandas as pd
df = pd.read_csv('OnlineNewsPopularity.csv')
df['n_tokens_content'][:9]

最后一行产生错误

KeyError回溯(最近一次调用上次)~/anaconda3/envs/tf11/lib/python3。6/现场包/熊猫/核心/索引/基础。py in get_loc(自身、键、方法、公差)2441 try:-

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取位置(熊猫/libs/index.c:5280)()

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。get_loc(pandas/_libs/index.c:5126)()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取项目(pandas/_libs/hashtable.c:20523)()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取项目(pandas/_libs/hashtable.c:20477)()

n_tokens_content

在处理上述异常期间,发生了另一个异常:

()中的KeyError回溯(最近一次调用)----

~/anaconda3/envs/tf11/lib/python3.6/site-包/熊猫/核心/frame.py在getitem(自我,键)1962返回自我。_getitem_multilevel(键)1963其他:-

~/anaconda3/envs/tf11/lib/python3。6/现场包装/熊猫/核心/框架。1969年_getitem_列(self,key)中的py#如果self,则获取1970列
。柱。是唯一的:-

~/anaconda3/envs/tf11/lib/python3。6/现场包/熊猫/核心/通用。py in_get_item_cache(self,item)1643 res=cache。如果res为None,则获取(项目)
1644:-

~/anaconda3/envs/tf11/lib/python3。6/现场包/熊猫/堆芯/内部构件。get(self、item、fastpath)3588 3589中的py如果不为null(item):-

~/anaconda3/envs/tf11/lib/python3。6/现场包/熊猫/核心/索引/基础。获取位置(自身、键、方法、公差)2442中的py
返回自身_发动机获取位置(钥匙)2443,钥匙错误除外:-

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取位置(熊猫/libs/index.c:5280)()

熊猫/_libs/索引。大熊猫中的pyx_图书馆。指数IndexEngine。get_loc(pandas/_libs/index.c:5126)()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取项目(pandas/_libs/hashtable.c:20523)()

pandas/_libs/hashtable_class_helper。熊猫体内的pxi_图书馆。哈希表。PyObjectHashTable。获取项目(pandas/_libs/hashtable.c:20477)()

n_tokens_content

我认为这是由csv文件中的一些行引起的,因为这段代码对其他csv运行良好。

如果是,如何有效地定位坏的行?

共有2个答案

谢洛城
2023-03-14

我遇到了同样的问题,问题已经解决:
输入:df。列输出:

 Index(['url', ' timedelta', ' n_tokens_title', ' n_tokens_content',
       ' n_unique_tokens', ' n_non_stop_words', ' n_non_stop_unique_tokens',
       ' num_hrefs', ' num_self_hrefs', ' num_imgs', ' num_videos',
       ' average_token_length', ' num_keywords', ' data_channel_is_lifestyle',
       ' data_channel_is_entertainment', ' data_channel_is_bus',
       ' data_channel_is_socmed', ' data_channel_is_tech',
       ' data_channel_is_world', ' kw_min_min', ' kw_max_min', ' kw_avg_min',
       ' kw_min_max', ' kw_max_max', ' kw_avg_max', ' kw_min_avg',
       ' kw_max_avg', ' kw_avg_avg', ' self_reference_min_shares',
       ' self_reference_max_shares', ' self_reference_avg_sharess',
       ' weekday_is_monday', ' weekday_is_tuesday', ' weekday_is_wednesday',
       ' weekday_is_thursday', ' weekday_is_friday', ' weekday_is_saturday',
       ' weekday_is_sunday', ' is_weekend', ' LDA_00', ' LDA_01', ' LDA_02',
       ' LDA_03', ' LDA_04', ' global_subjectivity',
       ' global_sentiment_polarity', ' global_rate_positive_words',
       ' global_rate_negative_words', ' rate_positive_words',
       ' rate_negative_words', ' avg_positive_polarity',
       ' min_positive_polarity', ' max_positive_polarity',
       ' avg_negative_polarity', ' min_negative_polarity',
       ' max_negative_polarity', ' title_subjectivity',
       ' title_sentiment_polarity', ' abs_title_subjectivity',
       ' abs_title_sentiment_polarity', ' shares'],
      dtype='object')

您可以发现,“n\u tokens\u title”列的标题是“n\u tokens\u title”,注意n\u tokens\u title前面的空格,并在代码中添加空格。

乐正玺
2023-03-14

当您使用df.columns打印列时,n_tokens_content在开始处有一个前导空格。

输入:df。列

输出:

Index(['url', ' timedelta', ' n_tokens_title', ' n_tokens_content',
   ' n_unique_tokens', ' n_non_stop_words', ' n_non_stop_unique_tokens',
   ' num_hrefs', ' num_self_hrefs', ' num_imgs', ' num_videos',
   ' average_token_length', ' num_keywords', ' data_channel_is_lifestyle',
   ' data_channel_is_entertainment', ' data_channel_is_bus',
   ' data_channel_is_socmed', ' data_channel_is_tech',
   ' data_channel_is_world', ' kw_min_min', ' kw_max_min', ' kw_avg_min',
   ' kw_min_max', ' kw_max_max', ' kw_avg_max', ' kw_min_avg',
   ' kw_max_avg', ' kw_avg_avg', ' self_reference_min_shares',
   ' self_reference_max_shares', ' self_reference_avg_sharess',
   ' weekday_is_monday', ' weekday_is_tuesday', ' weekday_is_wednesday',
   ' weekday_is_thursday', ' weekday_is_friday', ' weekday_is_saturday',
   ' weekday_is_sunday', ' is_weekend', ' LDA_00', ' LDA_01', ' LDA_02',
   ' LDA_03', ' LDA_04', ' global_subjectivity',
   ' global_sentiment_polarity', ' global_rate_positive_words',
   ' global_rate_negative_words', ' rate_positive_words',
   ' rate_negative_words', ' avg_positive_polarity',
   ' min_positive_polarity', ' max_positive_polarity',
   ' avg_negative_polarity', ' min_negative_polarity',
   ' max_negative_polarity', ' title_subjectivity',
   ' title_sentiment_polarity', ' abs_title_subjectivity',
   ' abs_title_sentiment_polarity', ' shares'],
  dtype='object')

输入方式为:df['n_tokens\u content'][:9]

输出:0219 125522113531 4 1072 5 3706 960 7 989 8 97

 类似资料:
  • 我正在使用从h5文件加载的调查数据作为通过熊猫包。在此中,所有行都是单个调查的结果,而列是单个调查中所有问题的答案。 我的目标是将此数据集缩减为更小的,仅包括在某个问题上具有某个描述答案的行,即在本列中具有相同的值。我能够确定具有此条件的所有行的索引值,但我找不到如何删除这些行或仅使用这些行创建新的df。

  • 问题内容: 我有一个大的数据框(几百万行)。 我希望能够对它进行分组操作,而只是按行的任意连续(最好大小相等)的子集进行分组,而不是使用各个行的任何特定属性来确定它们要进入的组。 用例:我想通过IPython中的并行映射将函数应用于每一行。哪行进入哪个后端引擎都没有关系,因为该函数一次基于一行来计算结果。(至少在概念上;实际上是矢量化的。) 我想出了这样的东西: 但这似乎很漫长,并且不能保证大小相

  • 我有两个数据帧,都有一个键列,可能有重复项,但数据帧大部分都有相同的重复键。我希望在该键上合并这些数据帧,但这样做的方式是,当两者具有相同的副本时,这些副本将分别合并。此外,如果一个数据帧的键的副本比另一个多,我希望它的值填充为NaN。例如: 我正在尝试获得以下输出 所以基本上,我想把复制的K2键当作K2_1,K2_2。。。然后在数据帧上进行how='outer'合并。你知道我怎样才能做到这一点吗

  • 假设熊猫数据帧如下所示: 如何将第三行(如row3)提取为pd数据帧?换句话说,row3.shape应该是(1,5),row3.head()应该是:

  • 问题内容: 在您希望POS标记存储在熊猫数据框中的一列文本(每行只有一句话)的情况下,SO上的大多数实现都使用apply方法 NLTK文档建议使用pos_tag_sents()有效标记多个句子。 这是否适用于此示例,如果是,那么代码是否像更改为那样简单,或者NLTK意味着段落的文本源 正如评论中提到的那样,目的是每次都减少感受器的负载, 但是问题是如何做到这一点,并且仍然在熊猫数据框中生成一列?

  • 我有这个熊猫数据框 这就给了我: 我该怎么办 做一个新的人物, 将标题添加到图"标题这里" 以某种方式创建一个映射,这样标签不是29,30等,而是“29周”,“30周”等。 将图表的较大版本保存到我的计算机(例如10 x 10英寸) 这件事我已经琢磨了一个小时了!