处理拆分数据帧时出现 Pandas KeyError

野比

我想对分成块的熊猫数据框执行一些操作。拆分数据框后,我尝试对块进行迭代,但在第一次迭代运行良好后,出现错误(见下文)。我经历过一些这样的问题:12但它们并没有完全解决我的问题。请帮我解决这个问题,因为我不完全理解它。

import pandas as pd

tupList = [('Eisenstadt', 'Paris','1', '2'), ('London', 'Berlin','1','3'), ('Berlin', 'stuttgat','1', '4'),
           ('Liverpool', 'Southampton','1', '5'),('Tirana', 'Blackpool', '1', '6'),('blackpool', 'tirana','1','7'),
           ('Paris', 'Lyon','1','8'), ('Manchester', 'Nice','1','10'),('Orleans', 'Madrid','1', '12'),
           ('Lisbon','Stockholm','1','12')]


cities = pd.DataFrame(tupList, columns=['Origin', 'Destination', 'O_Code', 'D_code'])


# purpose - splits the DataFrame into smaller of max size chunkSize (last is smaller)
def splitDataFrameIntoSmaller(df, chunkSize = 3):
    listOfDf = list()
    numberChunks = len(df) // chunkSize + 1
    for i in range(numberChunks):
        listOfDf.append(df[i*chunkSize:(i+1)*chunkSize])
    return listOfDf

citiesChunks = splitDataFrameIntoSmaller(cities)

for ind, cc in enumerate(citiesChunks):
    cc["distance"] = 0
    cc["time"] = 0

    for i in xrange(len(cc)):
        al = cc['Origin'][i]
        bl = cc['Destination'][i]
        '...' #trucating to make it readable

    cc.to_csv('out.csv', sep=',', encoding='utf-8')


Traceback (most recent call last):
  File ..., line 39, in <module>
    al = cc['Origin'][i]
  File ..., line 603, in __getitem__
    result = self.index.get_value(self, key)
  File ..., line 2169, in get_value
    tz=getattr(series.dtype, 'tz', None))
  File "pandas\index.pyx", line 98, in pandas.index.IndexEngine.get_value (pandas\index.c:3557)
  File "pandas\index.pyx", line 106, in pandas.index.IndexEngine.get_value (pandas\index.c:3240)
  File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:4279)
  File "pandas\src\hashtable_class_helper.pxi", line 404, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:8564)
  File "pandas\src\hashtable_class_helper.pxi", line 410, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:8508)
KeyError: 0L
耶斯列

您可以在一楼划分索引值,然后使用list comprehension- 按unique循环并选择 by loc,最后reset_index删除重复的索引:

cities.index = cities.index // 3
print (cities)
       Origin  Destination O_Code D_code
0  Eisenstadt        Paris      1      2
0      London       Berlin      1      3
0      Berlin     stuttgat      1      4
1   Liverpool  Southampton      1      5
1      Tirana    Blackpool      1      6
1   blackpool       tirana      1      7
2       Paris         Lyon      1      8
2  Manchester         Nice      1     10
2     Orleans       Madrid      1     12
3      Lisbon    Stockholm      1     12

citiesChunks = [cities.loc[[x]].reset_index(drop=True) for x in cities.index.unique()]
#print (citiesChunks)

print (citiesChunks[0])
       Origin Destination O_Code D_code
0  Eisenstadt       Paris      1      2
1      London      Berlin      1      3
2      Berlin    stuttgat      1      4

最后需要iterrows如果需要循环DataFrame

#write columns to file first
cols = ['Origin', 'Destination', 'O_Code', 'D_code', 'distance', 'time']
df = pd.DataFrame(columns=cols)
df.to_csv('out.csv', encoding='utf-8', index=False)

for ind, cc in enumerate(citiesChunks):
    cc["distance"] = 0
    cc["time"] = 0

    for i, val in cc.iterrows():
        al = cc.loc[i, 'Origin']
        bl = cc.loc[i, 'Destination']
        '...' #trucating to make it readable

    cc.to_csv('out.csv', encoding='utf-8', mode='a', header=None, index=False)
    print (cc.to_csv(encoding='utf-8'))

,Origin,Destination,O_Code,D_code,distance,time
0,Eisenstadt,Paris,1,2,0,0
1,London,Berlin,1,3,0,0
2,Berlin,stuttgat,1,4,0,0

,Origin,Destination,O_Code,D_code,distance,time
0,Liverpool,Southampton,1,5,0,0
1,Tirana,Blackpool,1,6,0,0
2,blackpool,tirana,1,7,0,0

,Origin,Destination,O_Code,D_code,distance,time
0,Paris,Lyon,1,8,0,0
1,Manchester,Nice,1,10,0,0
2,Orleans,Madrid,1,12,0,0

,Origin,Destination,O_Code,D_code,distance,time
0,Lisbon,Stockholm,1,12,0,0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

索引Pandas数据框时出现KeyError

来自分类Dev

KeyError:不在索引中,使用从其自身的Pandas数据帧生成的键

来自分类Dev

密钥存在时的KeyError

来自分类Dev

尝试将多个功能聚合到新列时出现意外的KeyError Pandas

来自分类Dev

尝试将时间戳保存到MySQL时,Python Pandas KeyError

来自分类Dev

在Python 3.4中的16.0 Pandas数据框中获取按索引访问keyerror的信息

来自分类Dev

KeyError Pandas

来自分类Dev

python pandas:根据列值拆分数据帧

来自分类Dev

使用Pivot的Pandas KeyError

来自分类Dev

熊猫-合并时出现KeyError

来自分类Dev

使用UnbalancedDataset包对数据集进行过度采样时出现KeyError(在pandas.index.IndexEngine.get_loc中)

来自分类Dev

Pandas KeyError:“发生在索引0”

来自分类Dev

过滤后在Pandas Dataframe中获取KeyError

来自分类Dev

Pandas DataFrame Colunm的KeyError异常

来自分类Dev

使用API时的KeyError处理

来自分类Dev

安装tensorflow时出现KeyError

来自分类Dev

KeyError:Caffe中的“数据”

来自分类Dev

Python失败,出现KeyError

来自分类Dev

Python Pandas比较CSV keyerror

来自分类Dev

将文件读入 Pandas 数据帧(使用 soh 拆分数据)

来自分类Dev

Pandas:拆分数据帧行并重新排列列值

来自分类Dev

使用 QString 时出现 KeyError

来自分类Dev

尝试删除 Pandas 中的列时出现 keyError。

来自分类Dev

Pandas DataFrames KeyError:0

来自分类Dev

从列中删除值时出现 Pandas keyerror

来自分类Dev

在 Pandas MultiIndex DataFrame 上建立索引时出现 KeyError

来自分类Dev

KeyError:在 Pandas 中创建新列时

来自分类Dev

Pandas 在 df2.columns 上合并时给出 KeyError

来自分类Dev

如何在pyspark中使用pandas_udf拆分数据帧中的字符串

Related 相关文章

热门标签

归档