我必須使用的數據有點混亂。它在其數據中包含標題名稱。我如何從現有的熊貓數據框中選擇一行並將其重命名爲列標題?將行轉換爲Pandas DataFrame的列標題,
我想要做的事,如:
header = df[df['old_header_name1'] == 'new_header_name1']
df.columns = header
我必須使用的數據有點混亂。它在其數據中包含標題名稱。我如何從現有的熊貓數據框中選擇一行並將其重命名爲列標題?將行轉換爲Pandas DataFrame的列標題,
我想要做的事,如:
header = df[df['old_header_name1'] == 'new_header_name1']
df.columns = header
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]
刪除第二行:
In [24]: df.reindex(df.index.drop(1))
Out[24]:
1 foo bar baz
0 1 2 3
2 4 5 6
This works(pandas v'0.19 .2'):
df.rename(columns=df.iloc[0])
您可以通過添加'.drop (df.index [0])' – ostrokach 2017-11-23 22:01:26
非常感謝您的快速響應!我怎樣才能通過價值來選擇一行來代替索引位置來使它成爲頭部?所以對於你的例子像.. df.columns = df [df [0] =='foo'] – 2014-10-01 17:57:04
問題是可能有不止一行的值爲'「foo」'。解決這個問題的一個方法是明確選擇第一個這樣的行:'df.columns = df.iloc [np.where(df [0] =='foo')[0] [0]]''。 – unutbu 2014-10-01 18:02:44
啊我明白你爲什麼那樣做了。對於我的情況,我知道只有一行的值爲「foo」。所以沒關係。我只是這樣做了,我想這跟你上面給我的那個一樣。 idx_loc = df [df [0] =='foo']。index.tolist()[0] df.columns = df.iloc [idx_loc] – 2014-10-01 18:08:02