Pandas DataFrame の行を列ヘッダーに変換する、質問する

Pandas DataFrame の行を列ヘッダーに変換する、質問する

処理しなければならないデータが少し乱雑です。データ内にヘッダー名があります。既存の pandas データフレームから行を選択し、それを列ヘッダーにする (名前を変更する) にはどうすればよいですか?

次のようなことをしたいです:

header = df[df['old_header_name1'] == 'new_header_name1']

df.columns = header

ベストアンサー1

In [21]: df = pd.DataFrame([(1,2,3), ('foo','bar','baz'), (4,5,6)])

In [22]: df
Out[22]: 
     0    1    2
0    1    2    3
1  foo  bar  baz
2    4    5    6

列ラベルを 2 行目 (インデックス位置 1) の値と同じに設定します。

In [23]: df.columns = df.iloc[1]

インデックスに一意のラベルがある場合は、次のコマンドを使用して 2 行目を削除できます。

In [24]: df.drop(df.index[1])
Out[24]: 
1 foo bar baz
0   1   2   3
2   4   5   6

インデックスが一意でない場合は、次のように使用できます。

In [133]: df.iloc[pd.RangeIndex(len(df)).drop(1)]
Out[133]: 
1 foo bar baz
0   1   2   3
2   4   5   6

df.drop(df.index[1])削除の使用全て2 行目と同じラベルを持つ行。一意でないインデックスはこのような障害 (または潜在的なバグ) につながる可能性があるため、インデックスが一意であることに注意する方がよい場合が多いです (Pandas では必須ではありませんが)。

おすすめ記事