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

时间:2015-07-07 16:22:58

标签: python pandas

我有两个文本文件,我希望使用Pandas。除了内部的一些内容之外,文件以完全相同的方式创建并且非常相似。但是,我的程序不能与其中一个文本文件一起使用,但可以与另一个一起使用。这是我的错误:

public function actionLocating()
{
    $searchModel = new ViewMachinesSearch();
    $dataProvider1 = $searchModel->search(Yii::$app->request->queryParams);
    $dataProvider1->pagination = false;
    $model = new TrackingForm();

    if (Yii::$app->request->post()){
        $model->machine_select = Yii::$app->request->post('keylist');
        $machines = $model->machine_select;
    }else{
        $machines = $model->getMachines();
    }

    if(!in_array(Yii::$app->user->identity->company_id, Yii::$app->CompaniesByUser->getCompaniesByUser(21))){
        $query = New Query;
        $query  ->select(['licenceplate', 'identifier', 'timestamp', 'lat', 'lng'])
                ->from('gps_live')
                ->where(['machine_id' => $machines])
                ->orderBy(['timestamp' => SORT_DESC]);
    }else{
        $subquery = New Query;
        $subquery   ->select(['licenceplate', 'identifier', 'timestamp', 'lat', 'lng'])
                    ->from('btc_m1_v1_1')
                    ->join('INNER JOIN', 'machine', 'machine.id_machine = machine_id')
                    ->where(['machine_id' => $machines])
                    ->andWhere('lat <> 0')
                    ->andWhere('lng <> 0')
                    ->orderBy(['timestamp' => SORT_DESC]);
        $query = New Query;
        $query  ->from(['sub' => $subquery])
                ->groupBy(['sub.licenceplate'])
                ->all();
    }

    $dataProvider = new ActiveDataProvider(['query'=>$query, 'pagination'=>false]);
    return $this->render('locating', [
        'model' => $model,
        'searchModel' => $searchModel,
        'dataProvider1' => $dataProvider1,
        'dataProvider' => $dataProvider,
        ]);
}

这是我的代码:

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'

3 个答案:

答案 0 :(得分:2)

看看以下几行:

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

您可能尝试提取某些词典中不存在的 tweet ['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中得到'。

答案 1 :(得分:1)

tweet ['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

答案 2 :(得分:0)

您应该添加与上一类别相同的条件,以跳过“无文字”案例。