python将第一列替换_python-通过将另一列与第二个DataFrame进行比较来替换一列中的值...
我正在嘗試使用涉及搜索另一個(gè)DataFrame的特定條件來替換df DataFrame的air_store_id列中的NaN值:
data = { 'air_store_id': [ 'air_a1', np.nan, 'air_a3', np.nan, 'air_a5' ],
'hpg_store_id': [ 'hpg_a1', 'hpg_a2', np.nan, 'hpg_a4', np.nan ],
'Test': [ 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon' ]
}
df = pd.DataFrame(data)
display(df)
當(dāng)在df.air_store_id中找到NaN時(shí),我想使用df.hpg_store_id中的值(如果有)將其與另一個(gè)名為id_table_df的 dataframe 的同一列進(jìn)行比較,并檢索其air_store_id.
這是id_table_df的樣子:
ids_data = { 'air_store_id': [ 'air_a1', 'air_a4', 'air_a3', 'air_a2' ],
'hpg_store_id': [ 'hpg_a1', 'hpg_a4', 'hpg_a3', 'hpg_a2' ] }
id_table_df = pd.DataFrame(ids_data)
display(id_table_df)
簡而言之,對(duì)于df.air_store_id中的每個(gè)NaN,通過將df.hpg_store_id與id_table_df.hpg_store_id進(jìn)行比較,將其替換為id_table_df.air_store_id中的相應(yīng)等價(jià)物.
在這種情況下,id_table_df最終用作查找表.產(chǎn)生的DataFrame如下所示:
我使用以下指令進(jìn)行了tried to merge them的操作,但引發(fā)了錯(cuò)誤:
df.loc[df.air_store_id.isnull(), 'air_store_id'] = df.merge(id_table_df, on='hpg_store_id', how='left')['air_store_id']
錯(cuò)誤信息:
KeyError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2441 try:
-> 2442 return self._engine.get_loc(key)
2443 except KeyError:
...
...
...
KeyError: 'air_store_id'
問題1:我該如何完成?
問題2:是否有辦法同時(shí)對(duì)這兩列(air_store_id和hpg_store_id)執(zhí)行此操作?如果可能的話,我不必為每個(gè)列分別運(yùn)行合并.
總結(jié)
以上是生活随笔為你收集整理的python将第一列替换_python-通过将另一列与第二个DataFrame进行比较来替换一列中的值...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白钢条用什么可以切割_错怪李佳琦了!原来
- 下一篇: python设计模式六大原则_php设计