csv를 읽을 때 Pandas에서 색인 열 제거


128

CSV 파일을 가져 오는 다음 코드가 있습니다. 3 개의 열이 있으며 그중 처음 두 개를 변수로 설정하고 싶습니다. 두 번째 열을 변수 "효율"로 설정하면 인덱스 열도 고정됩니다. 인덱스 열을 어떻게 제거 할 수 있습니까?

df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False)
energy = df.index
efficiency = df.Efficiency
print efficiency

나는 사용해 보았다

del df['index']

내가 설정 한 후

energy = df.index

다른 게시물에서 찾았지만 "KeyError : 'index'"가 발생합니다.

답변:


70

DataFramesSeries에는 항상 인덱스가 있습니다. 열 옆에 표시되지만 열 del df['index']이 아니므로 작동하지 않았습니다.

색인을 단순 순차 번호로 바꾸려면을 사용하십시오 df.reset_index().

인덱스가있는 이유와 사용 방법에 대한 이해를 얻으려면 예를 들어 Pandas까지 10 분을 참조하십시오 .


1
감사! 팬더를 사용하지 않고 다른 방식으로 가져 오기로 결정했습니다. 각 열에 대해 약간의 산술을 수행해야하는데 파이썬은 인덱스 열이 연결된 것을 좋아하지 않았습니다. Pandas는 확실히 데이터를 가져 오는 가장 쉬운 방법이지만 항상 내가 찾은 최고의 방법은 아닙니다.
Bogdan Janiszewski

2
Pandas를 사용하여 산술을 해보 셨나요?
Jamie Bull

1
인덱스 이름을 제거 할 수 있습니까?
Quant

3
예, index.name = None.
Dan Allan

1
@BogdanJaniszewski, 판다를 사용하지 않았다면 왜 이것을 답으로 받아들였습니까?
multigoodverse

249

CSV 파일을 읽을 때 다음과 같이 인수를 포함하십시오 index=False.

 df.to_csv(filename, index=False)

그리고 csv에서 읽기

df.read_csv(filename, index=False)  

이렇게하면 문제를 방지 할 수 있으므로 나중에 수정할 필요가 없습니다.


8
감사합니다. 이것이 바로 질문이 찾고있는 것입니다.
Pale Blue Dot

1
같은 방법으로 헤더를 제거하기위한 작품 "헤더는 거짓을 ="
J.Dahlgren

29
이어야합니다 index_col=False.
Vedda

1
사용 df.to_sql("table",cursor,if_exists="append",index=False)하면 sqlite 오류도 수정됩니다sqlite3.OperationalError: table message has no column named index
Anna

1
@vedda이 될 것으로 보인다 index=False위해 to_excel()index_col=False함께 read_csv()팬더 0.23.4있다. :-/
Matt wilkie

70

df.reset_index(drop=True, inplace=True)


2
이것은 실제로 제가 가장 좋아하는 솔루션이지만 매우 정교한 답변은 아닙니다. 매뉴얼은 drop"데이터 프레임 열에 인덱스를 삽입하지 마십시오. 인덱스를 기본 정수 인덱스로 재설정합니다." 라는 인수에 대해 다음과 같이 읽습니다 . pandas.pydata.org/pandas-docs/stable/generated/…
tommy.carstensen

@ tommy.carstensen 그렇다면 이전 인덱스를 대체하기 위해 인덱스에서 정수를 얻는 것을 어떻게 피할 수 있습니까? 귀하의 링크 텍스트에 대한 오해라고 생각합니다. 여기서 문제 는 인덱스를 삭제하는 것입니다 . 그리고 이것은 여기에 도달합니다. 인덱스가없는 날짜 프레임이 없지만 이전 인덱스를 삭제했기 때문에 기본 정수를 얻습니다. 그렇기 때문에이 답변은 허용되는 답변이어야하며 메모리 효율적인을 사용하기 때문 inplace=True입니다.
Lorenz

13

예를 들어 "id"인 경우 열 중 하나를 인덱스로 설정할 수 있습니다. 이 경우 인덱스 열은 선택한 열 중 하나로 대체됩니다.

df.set_index('id', inplace=True)

3

문제가 내 것과 동일한 경우 열 머리글을 0에서 열 크기로 재설정하려는 경우. 하다

df = pd.DataFrame(df.values);

편집하다:

이기종 데이터 유형이있는 경우 좋은 생각이 아닙니다. 더 나은 사용

df.columns = range(len(df.columns))

2

문제가 해결되지 않으면 from_csv 함수의 index_col 매개 변수를 사용하여 CSV 파일의 색인이되는 열을 지정할 수 있습니다. 데이터의 예를 제공하세요.


2

내가 할 한 가지입니다 df=df.reset_index() 다음df=df.drop(['index'],axis=1)


오류 : "축에 포함되지 않은 레이블 [ 'index']"
Vasin Yuriy

@VasinYuriy 이것은 같은 의미 df.reset_index().drop(columns=['yourfirstindex', 'yoursecondindex'])입니다. 인덱스에 이름이없는 표준 경우에만 '인덱스'와 함께 작동하고 df.reset_index().drop(columns=['index']). 추가 된 매개 변수 axis=1가 기본값입니다. 이 방법은 권장되지 않습니다. @SubhojitMukherjee의 reset_index(inplace=True)작업은 "inplace"이므로 메모리를 절약합니다.
Lorenz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.