현재 다음과 같은 데이터 프레임이 있습니다.
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 Sample Number Group Number Sample Name Group Name
1 1.0 1.0 s_1 g_1
2 2.0 1.0 s_2 g_1
3 3.0 1.0 s_3 g_1
4 4.0 2.0 s_4 g_2
헤더 행을 삭제하고 첫 번째 행을 새 헤더 행으로 만드는 방법을 찾고 있으므로 새 데이터 프레임은 다음과 같습니다.
Sample Number Group Number Sample Name Group Name
0 1.0 1.0 s_1 g_1
1 2.0 1.0 s_2 g_1
2 3.0 1.0 s_3 g_1
3 4.0 2.0 s_4 g_2
나는 if 'Unnamed' in df.columns:
헤더없이 데이터 프레임을 만든 다음 줄을 따라 물건을 시도했지만 df.to_csv(newformat,header=False,index=False)
아무데도 가지 않는 것 같습니다.
답변
new_header = df.iloc[0] #grab the first row for the header
df = df[1:] #take the data less the header row
df.columns = new_header #set the header row as the df header
답변
데이터 프레임은 다음을 수행하여 변경할 수 있습니다.
df.columns = df.iloc[0]
df = df[1:]
그때
df.to_csv(path, index=False)
트릭을해야합니다.
답변
한 줄짜리를 원하면 다음을 수행 할 수 있습니다.
df.rename(columns=df.iloc[0]).drop(df.index[0])
답변
@ostrokach 대답이 가장 좋습니다. 대부분의 경우 데이터 프레임에 대한 모든 참조에서이를 유지하고 싶을 것이므로 inplace = True의 이점이 있습니다.
df.rename(columns=df.iloc[0], inplace = True)
df.drop([0], inplace = True)
답변
여기에 “제자리에”열 인덱스를 정의하는 간단한 트릭이 있습니다. 행 인덱스를 제자리에 set_index
설정 하기 때문에 데이터 프레임을 전치하고 인덱스를 설정하고 다시 전치하여 열에 대해 동일한 작업을 수행 할 수 있습니다.
df = df.T.set_index(0).T
행에 이미 다른 인덱스가있는 경우 0
in 을 변경해야 할 수 있습니다 set_index(0)
.
답변
파이썬 스와핑을 사용하는 또 다른 한 줄 :
df, df.columns = df[1:] , df.iloc[0]
이것은 색인을 재설정하지 않습니다
반대는 예상대로 작동하지 않지만 df.columns, df = df.iloc[0], df[1:]
답변
-이 작업을 수행하는 또 다른 방법
df.columns = df.iloc[0]
df = df.reindex(df.index.drop(0)).reset_index(drop=True)
df.columns.name = None
Sample Number Group Number Sample Name Group Name
0 1.0 1.0 s_1 g_1
1 2.0 1.0 s_2 g_1
2 3.0 1.0 s_3 g_1
3 4.0 2.0 s_4 g_2
당신이 그것을 좋아한다면 화살표를 누르십시오. 감사
