답변:
색인 열이므로 index=False
쓰지 말고 전달 하십시오. 문서를 참조하십시오.
예:
In [37]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
pd.read_csv(io.StringIO(df.to_csv()))
Out[37]:
Unnamed: 0 a b c
0 0 0.109066 -1.112704 -0.545209
1 1 0.447114 1.525341 0.317252
2 2 0.507495 0.137863 0.886283
3 3 1.452867 1.888363 1.168101
4 4 0.901371 -0.704805 0.088335
와 비교 :
In [38]:
pd.read_csv(io.StringIO(df.to_csv(index=False)))
Out[38]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
다음 read_csv
을 전달하여 첫 번째 열이 인덱스 열임을 선택적으로 알 수도 있습니다 index_col=0
.
In [40]:
pd.read_csv(io.StringIO(df.to_csv()), index_col=0)
Out[40]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
skipcols
인수 가 없습니다 .CSV read_csv
에서 읽은 후에는 할 수 df = df.drop(columns=df.columns[0])
있거나 먼저 열을 읽은 다음 열을 빼고 첫 번째 열을 빼고 cols = pd.read_csv( ....., nrows=1).columns
다시 읽습니다. df = pd.read_csv(....., usecols=cols[1:])
이는 읽기 의 오버 헤드를 피합니다 불필요한 열을
이 문제는 CSV가 RangeIndex
일반적으로 이름이없는 CSV와 함께 저장 되었기 때문에 나타납니다 . 수정은 실제로 DataFrame을 저장할 때 수행해야하지만 항상 옵션은 아닙니다.
read_csv
와 index_col
인수IMO에서 가장 간단한 해결책은 명명되지 않은 열을 index 로 읽는 것 입니다. 에 index_col=[0]
인수를 지정하면 pd.read_csv
첫 번째 열에서 색인으로 읽습니다.
df = pd.DataFrame('x', index=range(5), columns=list('abc'))
df
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
# Save DataFrame to CSV.
df.to_csv('file.csv')
pd.read_csv('file.csv')
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
# Now try this again, with the extra argument.
pd.read_csv('file.csv', index_col=[0])
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
참고 DataFrame에 시작할 색인이없는 경우 출력 CSV를 작성할 때
사용하여 처음부터이를 피할 수있었습니다index=False
.df.to_csv('file.csv', index=False)
그러나 위에서 언급했듯이 이것이 항상 옵션은 아닙니다.
str.match
CSV 파일을 읽기 / 쓰기 할 수있는 코드를 수정할 수없는 경우, 당신은 할 수 필터링하여 열을 제거 하여 str.match
:
df
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
df.columns
# Index(['Unnamed: 0', 'a', 'b', 'c'], dtype='object')
df.columns.str.match('Unnamed')
# array([ True, False, False, False])
df.loc[:, ~df.columns.str.match('Unnamed')]
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
index_col=[0]
수정은 'unnamed : 0'이라는이 성가신 문제를 쉽게 해결했으며 바퀴를 재창조하는 자세한 코드를 작성했습니다.
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)