簡體   English   中英

如何解決/ Python / Pandas中的KeyError是什么?

[英]How to solve/what is a KeyError in Python/Pandas?

我有兩個文本文件,我希望使用Pandas。 除了內部的一些內容之外,文件以完全相同的方式創建並且非常相似。 但是,我的程序不能與其中一個文本文件一起使用,但可以與另一個一起使用。 這是我的錯誤:

Traceback (most recent call last):
  File "E:\Holiday Project\Politic\store.py", line 19, in <module>
    tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))
  File "E:\Holiday Project\Politic\store.py", line 19, in <lambda>
    tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))
KeyError: 'text'

這是我的代碼:

import json
import pandas as pd
from textblob import TextBlob

tweets_data_path = 'filename.txt'

tweets_data = []
tweets_file = open(tweets_data_path, "r")
for line in tweets_file:
    try:
        tweet = json.loads(line)
        tweets_data.append(tweet)
    except:
        continue

print (len(tweets_data))

tweets = pd.DataFrame()
tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))
tweets['lang'] = list(map(lambda tweet: tweet['lang'], tweets_data))
tweets['country'] = list(map(lambda tweet: tweet['place']['country'] if tweet['place'] != None else None, tweets_data))
avg = 0
for lol in tweets['text']:
    tweet = TextBlob(text)
    avg = tweet.sentiment.polarity + avg
avg = avg/len(tweets)
print(avg)

看看這些方面:

tweets = pd.DataFrame()
tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))

您可能嘗試提取某些詞典中不存在的推文['text'] 如果“text”字段僅存在於您正在加載的某些行中,那么您可能希望編寫類似的內容:

tweets = pd.DataFrame()
tweets['text'] = [tweet.get('text','') for tweet in tweets_data]
tweets['lang'] = [tweet.get('lang','') for tweet in tweets_data]
#and so on...

如果出於某種原因,在某些jsons“text”中不存在,那么你將在DataFrame中得到''。

推文['text']似乎不存在。 當您嘗試訪問不存在的哈希映射/字典中的密鑰時,會生成密鑰錯誤。 例如

myDict = {"hello": 1, "there": 2}
print myDict["hello"] #this prints 1
print myDict["friend"] #this will generate a key error because it does not exist

您應該添加與上一類別相同的條件,以跳過“無文本”情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM