Python&Pandas:遍历行以设置值

2024-09-27 02:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的dataframe中,我有一个包含json/dict的列,我希望遍历行以提取一些值,并将其添加到新列中。 数据如下所示,注意omdbdictenter image description here

我正在这样做,将imdbRating提取到一个独立的列中,但是它给了我keyerror

pd_data['imdbRating'] = 0 
for index, row in pd_data.iterrows():
    row['imdbRating'] =row['omdb_info']['imdbRating']

那么,提取价值的正确方法是什么?在

另外,我可以让它工作:

^{pr2}$

更新: 现在我认为应该是数据问题,也许有些row['omdb_info']没有{}?或者根本没有row['omdb_info'],我如何搜索它的存在?在

# this work
for index, row in pd_data[:118].iterrows():
    pd_data.ix[index,'imdbRating']  = row['omdb_info']['imdbRating']
# this do not work
for index, row in pd_data[:119].iterrows():
    pd_data.ix[index,'imdbRating']  = row['omdb_info']['imdbRating']

print pd_data.ix[118]['omdb_info']['imdbRating'] # => 6.8
print pd_data.ix[119]['omdb_info']['imdbRating'] # => 6.9
print pd_data.ix[120]['omdb_info']['imdbRating'] # => 5.5

它报告的错误

KeyError                                  Traceback (most recent call last)
<ipython-input-143-a0ae169ddfe9> in <module>()
      9 # this do not work
     10 for index, row in pd_data[:119].iterrows():
---> 11     pd_data.ix[index,'imdbRating']  = row['omdb_info']['imdbRating']

KeyError: 'imdbRating'

另外,我可以在哪里上传数据文件,这样你就可以看一下了?在


Tags: ininfofordataindexthisdictwork
2条回答

如果可能,您希望避免迭代,而应该找到一个要应用的函数,例如:

pd_data['imdbRating'] = pd_data['omdb_info'].apply(lambda x: x['imdbRating'])

我相信,您可以尝试简单地访问omdb_info中字典的值,并使用单个操作将其添加到新列中,而不是迭代。在

pd_data['imdb_rating'] = pd_data['omdb_info']['imdbRating']

我相信对于您正在尝试的操作,您可能不需要迭代,但我承认我已经有一段时间没有使用数据帧了。在

相关问题 更多 >

    热门问题