불규칙한 분리기를 위해 팬더 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
'programing' 카테고리의 다른 글
비트 조작을 이용하여 64비트 값에서 유일한 세트 비트의 위치를 효율적으로 찾는 방법은? (0) | 2023.10.31 |
---|---|
XML을 읽을 LINQ (0) | 2023.10.31 |
안드로이드 스튜디오를 다운로드하지 않고 안드로이드 SDK를 다운로드하려면 어떻게 해야 합니까? (0) | 2023.10.31 |
C++ 예외는 C 코드를 통해 안전하게 전파됩니까? (0) | 2023.10.31 |
런타임에 메서드를 찾을 수 없습니다. (0) | 2023.10.26 |