【发布时间】:2023-03-09 18:55:01
【问题描述】:
我有一个包含超过 200 000 个代码的导出文件,我试图仅过滤掉这些代码。由于每个代码都有多行不相关的信息,文件本身就超过了 100 万行。
我写了一个脚本来读取文件,根据前缀找到代码,然后写入另一个.csv文件:
import pandas as pd
df = pd.read_csv('export_file.csv')
output = []
for index, row in df.iterrows():
if ('PREFIX-01' in str(row['code'])):
code = str(row['code'])
output.append(code)
with open('output.csv','w') as file:
for line in output:
file.write(line)
file.write('\n')
该脚本适用于少量代码(大约 50k),但循环所有这些行需要很长时间。 Python 和 Pandas 对我来说相对较新,所以我想知道是否有办法让脚本更高效?
我听说grep 在这里有用,但目标是最终将其写入 Web 服务,因此我宁愿不通过命令行来执行此操作。
【问题讨论】:
-
你能试试
df2 = df[df['code'].str.contains('PREFIX-01')]然后把那个a写到一个新的csv中。 -
@Datanovice 我得到了
ValueError: Cannot mask with non-boolean array containing NA / NaN values。我相信这是由于code列有多个空行/值,因为其他行中的附加信息。 -
我添加了标志
str.contains('PREFIX-01', na=False),现在它可以工作了!但是我只想保留code列,是否可以删除其他所有内容?