python - Python如何根据另一个csv-pandas在一个csv中搜索值?
问题描述
我正在尝试创建一个程序,该程序需要搜索 csv 文件以匹配另一个 csv 文件中的值。
这是我到目前为止所拥有的:
import pandas as pd
import numpy as np
listings = pd.read_csv("data/listings.csv")
inventoryValue = pd.read_csv("data/inventoryValue.csv")
#get rid of rows with empty values in column 'Item Number'
listings['Item Number'].replace('', np.nan, inplace=True)
listings.dropna(subset=['Item Number'], inplace=True)
#get rid of rows with empty values in column 'AvgCost'
inventoryValue['Avg Cost'].replace('', np.nan, inplace=True)
inventoryValue.dropna(subset=['Avg Cost'], inplace=True)
#here how can I search for all of the rows in inventoryValue[Item Number] based on Listings[Item Number]
所以基本上我需要使用列表中的项目编号列在inventoryValue中查找与项目编号匹配的行,从那里我可以在Inventory Value中获取我需要的列并保存文件。
任何帮助深表感谢!
解决方案
我相信你想要的可以使用isin
. 此方法用于通过选择在特定列中具有特定值的行来过滤数据帧。
在您的情况下,您可以创建一个list
包含Listings['Item Number']的所有唯一值,然后检查inventoryValue['Item Number']中存在哪些元素,并返回一个简化的数据框:
my_list = listings['Item Number'].unique().tolist()
new_inventoryValue = inventoryValue[inventoryValue['Item Number'].isin(my_list)]
这将返回一个较小的数据框(按行),包含所有列,但您的“Iterm Number”列将仅包含my_list
.
推荐阅读
- c++ - 每次运行的 shared_ptr 计数更改
- python - python multiprocessing - 在进程之间共享类字典,随后从进程写入反映到共享内存
- reactjs - 为什么在使用 Auth.currentAuthenticatedUser() 和 useEffect 时我的状态不会改变?
- javascript - Socket.IO:如何提前结束 socket.on() 事件?
- python - 你如何排列一个列表(字符串)?你能用一套来做吗?
- flutter - 如何缩短这种场景下的重复代码
- gis - 如何以多边形(shapefile)作为边界框从 OSM 下载建筑物数据?
- reactjs - Reactjs TypeError this.state.gry.map 不是函数
- python - python textwrap - 在/字符上分解路径名
- pandas - Pandas UDF Facebook Prophet / 多参数