想法:我想用更新的價格資料替換部分 data1。
Q1:為什么更新了“筆記本電腦”和“列印機”,而不是“椅子”?
Q2:data2 中的“床”對于 data1 不存在。在這種情況下,不能更新 data1。我只是想知道為什么沒有像“'床'在 data1 中沒有匹配項”這樣的錯誤?
import pandas as pd
data1 =pd.DataFrame({'product_name': ['laptop', 'printer', 'tablet', 'desk', 'chair'],
'price': [0, 4, 6, 7, 9]
})
data2 =pd.DataFrame({'product_name': ['laptop', 'printer','chair','bed'],
'price': [89,32,34,355]
})
indi = data2['product_name']
for i in indi:
temp = data2.loc[data2['product_name'] == '%s'%i,'price']
data1.loc[data1['product_name'] == '%s'%i,'price'] = temp
uj5u.com熱心網友回復:
你需要這樣做:(temp.iloc[0])
for i in indi:
temp = data2.loc[data2['product_name'] == '%s'%i,'price']
data1.loc[data1['product_name'] == '%s'%i,'price'] = temp.iloc[0]
uj5u.com熱心網友回復:
我相信這可能與chair條目的非匹配索引有關。當您遍歷 時indi,您不僅可以獲得product_namefromdata還可以獲得其相應的索引。這是處理此類情況的更好方法:
In [53]: data1
Out[53]:
product_name price
0 laptop 0
1 printer 4
2 tablet 6
3 desk 7
4 chair 9
In [54]: data2
Out[54]:
product_name price
0 laptop 89
1 printer 32
2 chair 34
3 bed 355
In [55]: for row in data2.itertuples():
...: data1.loc[data1['product_name']==row.product_name, 'price'] = row.price
...:
In [56]: data1
Out[56]:
product_name price
0 laptop 89
1 printer 32
2 tablet 6
3 desk 7
4 chair 34
In [57]: data2
Out[57]:
product_name price
0 laptop 89
1 printer 32
2 chair 34
3 bed 355
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352906.html
上一篇:基于條件更改行值的Pythonfor回圈作業正常,但不會更改Pandas資料幀上的值?
下一篇:rfor回圈中的迭代
