1. ホーム
  2. python

[解決済み] pandas read_csvのseparatorを不規則な空白に対してより柔軟にする方法は?

2023-01-20 19:33:31

質問

ファイルからデータを読み込み、データフレームを作成したい。 read_csv メソッドを使用してファイルからデータを読み込み、データフレームを作成する必要があります。しかし、セパレータはあまり規則的ではありません。いくつかの列はタブで区切られています ( \t ) で区切られる列もあれば、スペースで区切られる列もあります。さらに、いくつかの列は 2 つまたは 3 つ以上のスペースで区切られていたり、スペースとタブの組み合わせ (例えば、3 つのスペース、2 つのタブ、そして 1 つのスペース) で区切られていることもあります。

これらのファイルを適切に扱うようにpandasに指示する方法はありますか?

ちなみに、Pythonを使うとこの問題は発生しません。私は使っています。

for line in file(file_name):
   fld = line.split()

そして、それは完璧に動作します。フィールドの間に2つのスペースがあっても3つのスペースがあっても関係ありません。スペースとタブの組み合わせでも問題は発生しません。パンダも同じことができるのでしょうか?

どのように解決するのですか?

からの ドキュメント を使用すると、正規表現か delim_whitespace :

>>> import pandas as pd
>>> for line in open("whitespace.csv"):
...     print repr(line)
...     
'a\t  b\tc 1 2\n'
'd\t  e\tf 3 4\n'
>>> pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4
>>> pd.read_csv("whitespace.csv", header=None, delim_whitespace=True)
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4