python - 在 csv 文件中搜索列表值并在 python 中返回其他列值

标签 python pandas csv

我有一个包含如下整数值的列表

mylist = [2, 10, 5]

现在我想在如下所示的 csv 文件中找到“mylist”中的元素,并返回附加到它的“item_code”。

No, item_code
1, nm111
2, nm121
3, nm131
4, nm141

我目前正在使用 csv 进行如下操作。

with open('item_codes.csv', 'r') as f:
     reader = csv.reader(f, delimiter=',')
     for row in reader:
         if row[0] in mylist:

但是,我也有兴趣在 pandas 中执行此操作。请帮助我。

最佳答案

如果您将 csv 数据放入这样的数据框中:

df = pd.read_csv('item_codes.csv')
print(df)

输出:

No, item_code
1, nm111
2, nm121
3, nm131
4, nm141

选项 1:

您可以执行以下操作:

df[df["No"].isin([2, 10, 5])]["item_code"].tolist() 

这将为您提供与列表 [2, 10, 5] 中的整数位于同一行的所有 item_code 值的列表

选项 2:

正如@jezrael 在下面的评论中所建议的,我们也可以使用 df.loc

解释:因为 df["No"].isin([2, 10, 5]) 返回一个 bool 值数组,我们可以使用这个数组作为掩码选择行并得到相同的结果如下:

df.loc[df["No"].isin([2, 10, 5]),"item_code"].tolist()

关于python - 在 csv 文件中搜索列表值并在 python 中返回其他列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46055200/

相关文章:

c# - 在 CsvHelper 中获取记录的长度

python - 通过 Python 电子邮件库发送电子邮件会引发错误 "expected string or bytes-like object"

python - 用python转换csv文件

python - 按顺序执行函数

python - 溢出错误: size does not fit in an int

python - 如何连接两个数据框并在这样的特定列上对齐?

python - 如何提取数据框的所有电子邮件地址和电话号码?

python - 使用 pandas 从开始时间和持续时间(分钟)计算结束时间。标准方法错误

python - 文件上传:Trim-last-few-Characters-Save Extension

python - 如何忽略 python 正则表达式组匹配中的字符串?