[python] 헤더를 맨 위 행으로 대체하는 Python Pandas

현재 다음과 같은 데이터 프레임이 있습니다.

           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

행에 이미 다른 인덱스가있는 경우 0in 을 변경해야 할 수 있습니다 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

당신이 그것을 좋아한다면 화살표를 누르십시오. 감사