标签: keyerror

Pandas 错误:__setitem__() 无法将字典值识别为列名列表

编辑:看起来这是 Pandas 中的一个潜在错误。查看@NicMoetsch 提出的这个 GitHub问题,注意到使用字典值分配的意外行为与框架__setitem__()__getitem__().


在我之前的代码中,我用字典重命名了一些列:

cols_dict = {
     'Long_column_Name': 'first_column',
     'Other_Long_Column_Name': 'second_column',
     'AnotherLongColName': 'third_column'
}
for key, val in cols_dict.items():
    df.rename(columns={key: val}, inplace=True)
Run Code Online (Sandbox Code Playgroud)

(我知道这里不需要循环——在我的实际代码中,我必须在数据帧列表中搜索数据帧的列,并获得字典键的子字符串匹配。)

后来我做了一些清理applymap(),索引字典值,它工作正常

pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将切片分配回自身时,我收到一个关键错误(此处为完整错误消息)。

pibs[cols_dict.values()] = pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/.local/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3079             try:
-> 3080                 return self._engine.get_loc(casted_key) …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas keyerror

8
推荐指数
1
解决办法
199
查看次数

python使用颜色引发KeyError消息

似乎KeyError消息的管理方式与其他错误不同.例如,如果我想使用颜色,它将适用于IndexError但不适用于KeyError:

err_message = '\x1b[31m ERROR \x1b[0m'

print err_message

raise IndexError(err_message)

raise KeyError(err_message)
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?有没有办法绕过它?(我真的需要KeyError提出类型的例外,以便以后能够捕获它)

python exception keyerror

7
推荐指数
1
解决办法
2642
查看次数

如何解决 KeyError: 'val_mean_absolute_error' Keras 2.3.1 and TensorFlow 2.0 from Chollet Deep Learning with Python

我在 Chollet 的书 Deep Learning with Python 的第 3.7 节。该项目旨在找出 1970 年代特定波士顿郊区的房屋价格中位数。

https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/3.7-predicting-house-prices.ipynb

在“使用 K 折验证验证我们的方法”部分,我尝试运行以下代码块:

num_epochs = 500
all_mae_histories = []
for i in range(k):
    print('processing fold #', i)
    # Prepare the validation data: data from partition # k
    val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]
    val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]

    # Prepare the training data: data from all other partitions
    partial_train_data = np.concatenate(
        [train_data[:i * num_val_samples],
         train_data[(i + 1) * …
Run Code Online (Sandbox Code Playgroud)

python-3.x keyerror keras tensorflow jupyter-notebook

7
推荐指数
2
解决办法
6347
查看次数

熊猫中的负索引给出与列表不同的KeyError

使用Python列表,您可以切片带有负索引

a = [1,2,3,4,5,6,7,8,9]
print a[-1] 
Run Code Online (Sandbox Code Playgroud)

将按预期打印9。

然而,

a=pd.Series([1,2,3,4,5,6,7,8,9])
print a[-1] 
Run Code Online (Sandbox Code Playgroud)

给出KeyError:-1L

indexing series slice pandas keyerror

6
推荐指数
1
解决办法
2209
查看次数

拟合时的Keras GRU NN KeyError:"不在索引中"

我正在尝试将我的GRU模型与我的训练数据相匹配时遇到问题.快速浏览StackOverflow后,我发现这篇文章与我的问题非常相似:

最简单的Lstm培训与Keras io

我自己的模型如下:

nn = Sequential()
nn.add(Embedding(input_size, hidden_size))
nn.add(GRU(hidden_size_2, return_sequences=False))
nn.add(Dropout(0.2))
nn.add(Dense(output_size))
nn.add(Activation('linear'))

nn.compile(loss='mse', optimizer="rmsprop")

history = History()
nn.fit(X_train, y_train, batch_size=30, nb_epoch=200, validation_split=0.1, callbacks=[history])
Run Code Online (Sandbox Code Playgroud)

错误是:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-14-e2f199af6e0c> in <module>()
      1 history = History()
----> 2 nn.fit(X_train, y_train, batch_size=30, nb_epoch=200, validation_split=0.1, callbacks=[history])

C:\Users\XXXX\AppData\Local\Continuum\Anaconda\lib\site-packages\keras\models.pyc in fit(self, X, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, show_accuracy, class_weight, sample_weight)
    487                          verbose=verbose, callbacks=callbacks,
    488                          val_f=val_f, val_ins=val_ins,
--> 489                          shuffle=shuffle, metrics=metrics)
    490 
    491     def predict(self, X, batch_size=128, verbose=0): …
Run Code Online (Sandbox Code Playgroud)

python neural-network keyerror theano keras

6
推荐指数
1
解决办法
4788
查看次数

python-如何解决KeyError:2?

我有一个格式为的字典 {int:[]}

当我尝试将值设置为值列表为 NULL 的键值对时,我得到了 KeyError: 2

tags = {}
tags.setdefault(int,[])
for tag_id in (db.session.query(PostTagRel).filter(PostTagRel.id == post_id).first().tag_id.split(',')):
            tag = db.session.query(Tag).filter(Tag.tag_id == tag_id).first().tag_name
            tags[post_id].append(tag)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

python dictionary keyerror

6
推荐指数
1
解决办法
3万
查看次数

python:pandas.DataFrame?如何避免keyerror?

C++,当我在表中找不到关键字时,它将返回NULL或在数据库中它将返回一个空表,因此程序继续运行。但是在 中python,它会抛出一个exception,并中断我的程序。我可以避免吗?例如,我有一个名为的 DataFrame datevar

(datetimeIndex)   value
2001-01-01           1
2001-01-02           1
2001-01-03           3
....

v = datevar.xs('2000-01-01', level='date') # of course "keyError"
v = datevar.loc['2000-01-01' , :]          # of course "keyError"
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas keyerror

6
推荐指数
1
解决办法
3995
查看次数

deepreplay 包出现问题:ValueError:无法创建组(名称已存在)

最近我在使用deepreplay 包时遇到了一个问题,因为它的 Traceback 如下:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-c3b5d8180301> in <module>()
----> 1 model.fit(X, y, epochs=50, batch_size=16, callbacks=[replay])

2 frames
/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py in error_handler(*args, **kwargs)
     65     except Exception as e:  # pylint: disable=broad-except
     66       filtered_tb = _process_traceback_frames(e.__traceback__)
---> 67       raise e.with_traceback(filtered_tb) from None
     68     finally:
     69       del filtered_tb

/usr/local/lib/python3.7/dist-packages/deepreplay/callbacks.py in on_train_begin(self, logs)
     83         self.n_epochs = self.params['epochs']
     84 
---> 85         self.group = self.handler.create_group(self.group_name)
     86         self.group.attrs['samples'] = self.params['samples']
     87         self.group.attrs['batch_size'] = self.params['batch_size']

/usr/local/lib/python3.7/dist-packages/h5py/_hl/group.py in create_group(self, name, track_order)
     63 …
Run Code Online (Sandbox Code Playgroud)

python h5py keyerror valueerror google-colaboratory

6
推荐指数
0
解决办法
234
查看次数

分配字典键和值时出现 KeyError

我最近开始学习 Python,我想编写一个脚本来从 CSV 列(格式为 YYYY/DD/MM)中提取一个月中的哪一天,然后将网站用户与一个月中的几天(最终是一个月的几周)进行比较) 作为挑战/学习练习。要点是它提取 CSV 信息,将其格式化/转换为整数,并将其作为字典将其重新组合在一起,将第 1-31 天与站点访问者的数量进行比较。

我的代码如下。我收到的错误是 'KeyError: 1' on line 29 result[days] = users。我想我明白发生了什么(有点 - 我猜它对我尝试为空字典分配值的方式不满意?它似乎正在寻找整数 1 作为键但没有找到它? ) 但我不知道接下来要做什么。我学习 Python 大约 2 周,所以我希望这不是一个太愚蠢的问题。我究竟做错了什么?如何使 users_by_day 索引 [0] 和 [1] 处的列成为字典中的键和值?

注意:我正在学习和使用 Python 3。

 import csv
 result = {}
 with open('analytics.csv') as csv_file:
     csv_reader = csv.reader(csv_file, delimiter=',')
     line_count = 0
     users_by_day = list(csv_reader)
     for row in users_by_day: #iterate through data

          day = row[0].split('/') #split date to extract day of month

         try: #skip unsplit cells

             day …
Run Code Online (Sandbox Code Playgroud)

python csv dictionary python-3.x keyerror

5
推荐指数
1
解决办法
3898
查看次数

熊猫爆炸失败,KeyError: 0

一个pandas.DataFrame.explode作品如何?

在文档中:

https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.explode.html

df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1})
display(df)
print(df.columns)
print(df.dtypes)
df.explode('A')
Run Code Online (Sandbox Code Playgroud)

工作得很好。但是对于我的数据,它因一个关键异常而失败。我的数据最初是这样的: 在此处输入图片说明

具有以下类型:

print(foo.columns)
print(foo.dtypes)
Index(['model', 'id_min_days_cutoff'], dtype='object')
model                 object
id_min_days_cutoff     int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

其中model是使用 statsmodels 回归获得的:

model.summary2().tables[1]
Run Code Online (Sandbox Code Playgroud)

调用时:df.explode('model')

它失败了:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

试图重现这一点:

df_json = df.to_json()

# now load it again for SF purposes
df_json = '{"model":{"0":{"Coef.":{"ALQ_15PLUS_perc":95489.7866599741,"AST_perc":-272.9213162565,"BEV_UNTER15_perc":6781.448845533,"BEV_UEBER65_perc":-46908.2889142205},"Std.Err.":{"ALQ_15PLUS_perc":1399665.9788843254,"AST_perc":1558.1286516172,"BEV_UNTER15_perc":2027111.8764156068,"BEV_UEBER65_perc":1230965.9812726702},"z":{"ALQ_15PLUS_perc":0.0682232676,"AST_perc":-0.1751596802,"BEV_UNTER15_perc":0.0033453747,"BEV_UEBER65_perc":-0.038106893},"P>|z|":{"ALQ_15PLUS_perc":0.9456079052,"AST_perc":0.8609541651,"BEV_UNTER15_perc":0.9973307821,"BEV_UEBER65_perc":0.9696024555},"[0.025":{"ALQ_15PLUS_perc":-2647805.1223393031,"AST_perc":-3326.7973567063,"BEV_UNTER15_perc":-3966284.8215624653,"BEV_UEBER65_perc":-2459557.2784026605},"0.975]":{"ALQ_15PLUS_perc":2838784.6956592514,"AST_perc":2780.9547241933,"BEV_UNTER15_perc":3979847.7192535317,"BEV_UEBER65_perc":2365740.7005742197}},"1":{"Coef.":{"ALQ_15PLUS_perc":-140539.5196612777,"AST_perc":142.579413527,"BEV_UNTER15_perc":-45288.5612893498,"BEV_UEBER65_perc":-152106.9841374909},"Std.Err.":{"ALQ_15PLUS_perc":299852250.9155113101,"AST_perc":24013.7007484301,"BEV_UNTER15_perc":417010365.7919532657,"BEV_UEBER65_perc":171876588.9403209388},"z":{"ALQ_15PLUS_perc":-0.0004686959,"AST_perc":0.0059374194,"BEV_UNTER15_perc":-0.000108603,"BEV_UEBER65_perc":-0.0008849779},"P>|z|":{"ALQ_15PLUS_perc":0.9996260348,"AST_perc":0.9952626525,"BEV_UNTER15_perc":0.9999133474,"BEV_UEBER65_perc":0.9992938899},"[0.025":{"ALQ_15PLUS_perc":-587840151.997330904,"AST_perc":-46923.4091889186,"BEV_UNTER15_perc":-817370586.6933914423,"BEV_UEBER65_perc":-337024031.0927618742},"0.975]":{"ALQ_15PLUS_perc":587559072.9580082893,"AST_perc":47208.5680159725,"BEV_UNTER15_perc":817280009.5708128214,"BEV_UEBER65_perc":336719817.1244869232}}},"id_min_days_cutoff":{"0":2,"1":3}}'
pd.read_json(df_json).explode('model')
Run Code Online (Sandbox Code Playgroud)

失败:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

编辑

尝试使用以下方法之一找到替代方法:如何在 Pandas DataFrame 中取消嵌套(分解)一列?选择 2.1

pd.DataFrame({'model':np.concatenate(df_json.model.values)},
               index=df_json.index.repeat(ddf_jsonf.model.str.len()))
Run Code Online (Sandbox Code Playgroud)

但这失败了:

ValueError: zero-dimensional arrays cannot be concatenated …
Run Code Online (Sandbox Code Playgroud)

python explode pandas keyerror

5
推荐指数
1
解决办法
1113
查看次数