Pandasを使用して正規表現を満たす行だけを選択する方法を見つけようとしています。私の実際のデータセットdata.csvには、1つの列(見出しにはラベルが付けられていません)と数百万の行があります。最初の4行は、次のようになります。正規表現を満足する行をpandasでフィルタリングする方法
5;4Z13H;;L
5;346;4567;;O
5;342;4563;;P
5;3LPH14;4567;;O
と私は基本的に私は私のデータをフィルタリングするためにパンダを希望行4から行1から4Z13H;
と3LPH14;
を識別する次の正規表現
([1-9][A-Z](.*?);|[A-Z][A-Z](.*?);|[A-Z][1-9](.*?);)
を書きました選択し、行1と4 は、だから私の所望の出力は、私はその後、サブを保存したい
5;4Z13H;;L
5;3LPH14;4567;;O
だろうフィルタ行のセットを新しいcsvのfilteredData.csvに追加します。上記のコードは、(私はまだパンダのチャンクを使用する方法を把握しようとしている)、いくつかの構文上の問題を持っているので、私はまだのpythonに比較的新しいです
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)
:これまでのところ、私はこれだけを持っています。しかし、主な問題は、正規表現で行をフィルタリングすることです。私は大いに
お返事ありがとうございます。しかし、行に含まれている他のデータを保持しながら、これをどうすればできますか?したがって、 '0 4Z13'と' 3 3LPH14'の代わりに '5; 4Z13H ;; Lと' 5; 3LPH14; 4567 ;; O' – M3105
@ M3105を取得しようとしています。 – Vaishali
ああ、ありがとう、ありがとう! – M3105