programing

csv 가져오기 판다 중 행 건너뛰기

javamemo 2023. 8. 23. 21:33
반응형

csv 가져오기 판다 중 행 건너뛰기

다음을 사용하여 .csv 파일을 가져오려고 합니다.pandas.read_csv()그러나 데이터 파일의 두 번째 행(색인이 0인 경우 인덱스 = 1인 행)은 가져오지 않습니다.

명령어와 함께 사용되는 인수가 모호하기 때문에 가져오지 않는 방법을 알 수 없습니다.

판다 웹사이트에서:

skiprows리스트 유사 또는 정수

파일 시작 시 건너뛸 행 수(0-인덱스) 또는 건너뛸 행 수(int)."

만약에.skiprows=1인수에서 첫 번째 행을 건너뛸지 아니면 인덱스 1이 있는 행을 건너뛸지 어떻게 알 수 있습니까?

직접 시도해 볼 수 있습니다.

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

저는 아직 언급할 평판은 없지만, 추가 참조를 위해 알코 답변에 추가하고 싶습니다.

문서에서:

행 건너뛰기:파일에서 건너뛸 행에 대한 숫자 모음입니다.처음 n개 행을 건너뛸 정수일 수도 있습니다.

csv 파일을 읽다가 skiprows를 실행하다가 같은 문제가 생겼습니다.skip_rows=1을 하고 있었습니다. 이것은 작동하지 않을 것입니다.

간단한 예제에서는 csv 파일을 읽는 동안 건너뛰기 행을 사용하는 방법에 대해 설명합니다.

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

이 모든 답변에는 한 가지 중요한 점이 누락되어 있습니다. 즉, 파일의 n번째 줄은 데이터 세트의 n번째 행이 아닙니다.USGS에서 오래된 스트림 게이지 데이터를 다운로드하는 상황이 있습니다.데이터 집합의 머리에는 '#'이 주석으로 표시됩니다. 첫 번째 줄은 레이블이고, 다음 줄은 날짜 유형을 설명하는 줄이며, 데이터 자체의 마지막 줄입니다.댓글 줄이 몇 개인지는 모르겠지만 처음 몇 줄이 무엇인지는 알고 있습니다.예:

> # ----------------------------- WARNING ----------------------------------
> # Some of the data that you have obtained from this U.S. Geological Survey database
> # may not have received Director's approval. ... agency_cd    site_no datetime    tz_cd   139719_00065    139719_00065_cd
> 5s    15s 20d 6s  14n 10s USGS    08041780    2018-05-06 00:00    CDT 1.98    A

n행은 물론 n행도 자동으로 건너뛸 수 있는 방법이 있으면 좋겠습니다.

참고로 다음과 같은 문제를 해결할 수 있었습니다.

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)

인덱스:read_csvCSV 파일의 줄/행 번호를 참조합니다(첫 번째 줄에는 색인 0이 있음).행을 건너뛸 수 있는 옵션은 다음과 같습니다.

from io import StringIO

csv = \
"""col1,col2
1,a
2,b
3,c
4,d
"""
pd.read_csv(StringIO(csv))

# Output:
   col1 col2  # index 0
0     1    a  # index 1
1     2    b  # index 2
2     3    c  # index 3
3     4    d  # index 4

파일의 시작 부분에서 두 줄(색인 0과 1)을 건너뜁니다.열 이름도 건너뛰고(색인 0) 맨 위 줄이 열 이름에 사용됩니다.열 이름을 추가하려면 사용names = ['col1', 'col2']매개변수:

pd.read_csv(StringIO(csv), skiprows=2)

# Output:
   2  b
0  3  c
1  4  d

두 번째 및 네 번째 줄(색인 1 및 3)을 건너뜁니다.

pd.read_csv(StringIO(csv), skiprows=[1, 3])

# Output:
   col1 col2
0     2    b
1     4    d

마지막 두 줄 건너뛰기:

pd.read_csv(StringIO(csv), engine='python', skipfooter=2)

# Output:
   col1 col2
0     1    a
1     2    b

람다 함수를 사용하여 모든 두 번째 줄(색인 1 및 3)을 건너뜁니다.

pd.read_csv(StringIO(csv), skiprows=lambda x: (x % 2) != 0)

# Output:
   col1 col2
0     2    b
1     4    d

skip[1]첫 번째 줄이 아니라 두 번째 줄을 건너뜁니다.

언급URL : https://stackoverflow.com/questions/20637439/skip-rows-during-csv-import-pandas

반응형