比较一个值是否存在于CSV文件中

0 投票
1 回答
973 浏览
提问于 2025-04-17 21:48

我有一个200 MB的CSV文件和一个4 GB的压缩格式的JSON文件(压缩后是300 MB)。现在我需要检查JSON中的某个字段是否有值与CSV文件第一列的任何值匹配。因为我需要对多个JSON文件进行这个操作,而CSV文件是一样的,所以我希望使用pandas能加快这个过程。

从CSV文件读取后,会形成以下的数据结构:

Empty DataFrame
Columns: []
Index: [1335063, 1339033, 1344453, 1392603, 1520033, 5342858, 5361498, 5534501, 5542881, 5552665, 5618397, 5824472, 5867442, 5908134, 5908134, 6203501, 6208411, 6209921, 6211681, 6212831, 6213691, 6287061, 6293811, 6387151, 6415771, 6508691, 6649281, 6673261, 6716441, 6782181, 6821631, 7710551, 9413871, 11280941, 11285381, 11762751, 11769381, 11854271, 11964831, 11995871, 12240091, 12541201, 12553471, 12633891, 12648021, 12834201, 12899581, 13177041, 13282401, 13290581, 13292951, 13297681, 14536901, 14592891, 14665721, 14843571, 15120821, 15127231, 15531511, 15969981, 16648561, 16808911, 16809381, 17019781, 17021721, 17224241, 17234921, 17327321, 17923721, 17930901, 18577181, 18606681, 19448911, 19557541, 20272801, 20286621, 20295001, 20351761, 21052471, 21062651, 21106501, 21578741, 22279401, 22312931, 23078211, 23164911, 24937351, 24988721, 26171811, 26188561, 26224001, 26379241, 26380531, 26383571, 26386251, 26388621, 27509171, 27825771, 28282901, 28998561, ...]

接下来,从gzip文件读取的数据将是一个JSON字符串,我可以用read_json来转换它。但是我不太明白怎么检查JSON中的'id'字段是否在这里的列表中。

相关问题:

1 个回答

1

这段话是说,你可以这样开始:

import numpy as np
import pandas

magic_value = 11
df = pandas.DataFrame(np.random.random_integers(0, 12, size=(10,2)))

#     0   1
# 0   1   1
# 1   5   3
# 2  12  12
# 3  12   8
# 4  11   4
# 5  11  12
# 6   9   7
# 7   7   1
# 8   0  11
# 9   2   1

magic_value in df[0].values
# True

首先,用 pandas.read_json 来读取你的JSON数据,然后找到你想要的值,具体的操作可以参考 (pandas索引文档),接下来就可以开始处理数据了。

撰写回答