【发布时间】:2026-01-09 08:05:02
【问题描述】:
我正在尝试找出一种方法,通过 Pandas 仅选择满足我的正则表达式的行。我的实际数据集 data.csv 有一列(标题未标记)和数百万行。前四行如下所示:
5;4Z13H;;L
5;346;4567;;O
5;342;4563;;P
5;3LPH14;4567;;O
我写了下面的正则表达式
([1-9][A-Z](.*?);|[A-Z][A-Z](.*?);|[A-Z][1-9](.*?);)
它将从第 1 行识别 4Z13H; 和从第 4 行识别 3LPH14;。基本上我希望 pandas 过滤我的数据并选择第 1 行和第 4 行。
所以我想要的输出是
5;4Z13H;;L
5;3LPH14;4567;;O
然后,我想将过滤器行的子集保存到新的 csv、filteredData.csv 中。到目前为止我只有这个:
import pandas as pd
import numpy as np
import sys
import re
sys.stdout=open("filteredData.csv","w")
def Process(filename, chunksize):
for chunk in pd.read_csv(filename, chunksize=chunksize):
df[0] = df[0].re.compile(r"([1-9][A-Z]|[A-Z][A-Z]|[A-Z][1-9])(.*?);")
sys.stdout.close()
if __name__ == "__main__":
Process('data.csv', 10 ** 4)
我对 python 还是比较陌生,所以上面的代码有一些语法问题(我还在试图弄清楚如何使用 pandas chunksize)。然而,主要问题是通过正则表达式过滤行。非常感谢任何人的建议
【问题讨论】: