programing

불규칙한 분리기를 위해 팬더 read_csv의 분리기를 더 유연한 wrt 공백으로 만드는 방법은 무엇입니까?

javajsp 2023. 10. 31. 20:28

불규칙한 분리기를 위해 팬더 read_csv의 분리기를 더 유연한 wrt 공백으로 만드는 방법은 무엇입니까?

파일에서 데이터를 읽어 데이터 프레임을 만들어야 합니다.read_csv방법.그러나 구분자는 매우 규칙적이지 않습니다. 일부 열은 탭으로 구분됩니다. (\t), 기타는 띄어쓰기로 구분됩니다.또한 일부 열은 2개 또는 3개 이상의 공백으로 구분하거나 공백과 탭의 조합(예: 3개의 공백, 2개의 탭, 그리고 나서 1개의 공백)으로도 구분할 수 있습니다.

팬더들에게 이 파일들을 적절하게 처리하라고 말할 방법이 있습니까?

그런데 파이썬을 사용해도 이 문제는 없습니다.사용 용도:

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

그리고 완벽하게 작동합니다.필드 사이에 2개 또는 3개의 공백이 있어도 상관 없습니다.공백과 탭의 조합으로도 문제가 발생하지 않습니다.판다도 그렇게 할 수 있을까요?

문서에서 regex 또는 regex를 사용할 수 있습니다.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
>>> pd.read_csv("whitespace.csv", header = None, sep = "\s+|\t+|\s+\t+|\t+\s+")

임의 수의 공백과 탭 조합을 구분자로 사용합니다.

Pandas에는 두 개의 csv 리더가 있으며 중복된 주요 화이트 스페이스에 대해서만 유연합니다.

pd.read_csv("whitespace.csv", skipinitialspace=True)

없는 동안에는

pd.DataFrame.from_csv("whitespace.csv")

어느 것도 흰 공간을 따라가는 것에 관해서는 융통성이 없으므로 규칙적인 표현으로 답을 볼 수 있습니다.delim_whitespace는 구분자로 공백(또는 \t가 없는)만 허용하므로 사용하지 마십시오.

우리는 이것이 모든 조합 및 0 이상의 발생을 처리하는 것으로 간주할 수 있습니다.

pd.read_csv("whitespace.csv", header = None, sep = "[ \t]*,[ \t]*")

언급URL : https://stackoverflow.com/questions/15026698/how-to-make-separator-in-pandas-read-csv-more-flexible-wrt-whitespace-for-irreg