python - Python:循环索引问题
问题描述
想法:我想用更新的价格数据替换部分 data1。
Q1:为什么更新了“laptop”和“printer”,但没有更新“chair”?
Q2:data2 中的“床”对于 data1 不存在。在这种情况下,无法更新 data1。我只是想知道为什么没有像“'bed'在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
解决方案
我相信这可能与chair
条目的不匹配索引有关。当您遍历 时indi
,您不仅会获得product_name
from data
,还会获得其对应的索引。这是处理此类情况的更好方法:
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
推荐阅读
- r - 有没有办法将本地存储的图像读取到 Plotly 中?
- pandas - 如何删除具有特定值的行
- php - Regex match longitude value that more than 18 digit
- java - MD5 TripleDES Ecryption in Java NoPadding Issue
- scala - CSV format is not loading in spark-shell
- flutter - How to provide data with provider using nested data models [List > Item > Sublist > SubItem]
- matlab - If I have 4 coordinates making a rectangle, how can I color in that area?
- flutter - 在 Flutter 的网页中显示对话框提示
- bash - 查明我列表中的文件夹是否真的存在于我的文件夹中
- javascript - 如何将 HTML 输入中的文件加载到 Emscripten 的 MEMFS 文件系统中?