簡體   English   中英

Python和Pandas:遍歷行以設置值

[英]Python & Pandas: iterate through rows to set value

在我的dataframe ,我有一列包含json/dict的列,我想遍歷行以提取一些值,然后將其添加到新列中。 這是數據的樣子,請注意omdbdict 在此處輸入圖片說明

我正在這樣做,將imdbRating提取到獨立列中,但是它給了我keyerror

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

那么,提取價值的正確方法是什么?

另外,我可以使它工作:

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

更新:現在我認為應該是數據問題,也許某些row['omdb_info']沒有['imdbRating']嗎? 還是根本沒有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'

另外,我可以在哪里上傳數據文件,以便您查看它?

如果可能的話,您希望避免迭代,而是尋找一個要應用的函數,例如:

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

我相信,除了迭代,您還可以嘗試僅通過omdb_info訪問字典的值,然后通過一次操作將其添加到新列中。

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

我相信對於您要執行的操作,您可能不需要進行迭代,但是我承認有一段時間沒有使用DataFrames了。

暫無
暫無

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

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