在用Pandas读取的CSV数据中查找某个值
我用Pandas读取一个CSV文件:
import pandas as pd
fcsv = pd.read_csv("my_file.csv", sep=";", usecols=[4,6])
print(fcsv)
ID Use_Fuel
0 15454509, 00664154 No
1 00928674, 10974172 No
2 15453278, 07320582 No
3 15308995, 10810706 No
4 0147006X, 15454126 No
... ... ...
17173 14322919 No
17174 23672293, 03422852 No
17175 03404560 No
17176 27481956, 27481964 No
17177 18600743, 14351935 Yes
字段ID包含元素的标识符,对每一个元素来说,标识符可能只有一个,也可能有两个。问题在于:给定一个标识符,例如 "07320582",如何找到它出现的行号(示例中的位置为2)?
我已经尝试了
"07320582" in fcsv["ID"]
但它返回一个单独的 False。我也检查了
fcsv["ID"] == "07320582"
但它返回一个 False 的向量。若我尝试
fcsv["ID"] == "15453278, 07320582"
则在位置2 返回 True,但我需要一次只检查一个ID,即像
fcsv["ID"] == "07320582"
那该如何实现?
解决方案
df = pd.read_csv("my_file.csv", sep=";", usecols=\[4, 6\])
\# Explode the comma-separated IDs into one row per ID
df = df.assign(ID=df\["ID"\].str.split(r",\\s\*")).explode("ID")
\# Now exact lookup works fine
df\[df\["ID"\] == "07320582"\]
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。