![](/img/trans.png)
[英]Change Dataframe Column Name by mapping with other Dataframe Column, Python 3.6
[英]Concat column name with data of first row, Python 3.6 Dataframe
我想將數據幀第一行的數據添加到其列名並刪除第一行。
源數據框架:
2013K2 2013K3 2013K4 2013K5
ABC1 ABC2 ABC3 ABC4
324 5435 543 543
6543 543 657 765
765 876 876 9876
需要將列名重命名為列名+'|'+第一行數據:
2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
324 5435 543 543
6543 543 657 765
765 876 876 9876
IIUC
df.columns=df.columns+'|'+df.iloc[0,:]
df.iloc[1:,]
Out[41]:
0 2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
1 324 5435 543 543
2 6543 543 657 765
3 765 876 876 9876
df=df.iloc[1:,]
df
Out[43]:
0 2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
1 324 5435 543 543
2 6543 543 657 765
3 765 876 876 9876
你可以這樣做,使用T
和set_index
,然后使用map
和format
將set_index
列組合到單個列標題。
df_out = df.T.set_index(0, append=True).T
df_out.columns = df_out.columns.map('{0[0]}|{0[1]}'.format)
df_out
輸出:
2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
1 324 5435 543 543
2 6543 543 657 765
3 765 876 876 9876
你可以使用以下單行:
In [148]: df = df.rename(columns=lambda x: x+'|'+df.iloc[0][x]).iloc[1:]
In [149]: df
Out[149]:
2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
1 324 5435 543 543
2 6543 543 657 765
3 765 876 876 9876
可以使用簡單的for
循環和其他基本函數來創建新的列名列表並更改數據幀:
newcols = [] # empty list to have new column names
for i in range(len(df.columns)):
newcols.append(df.columns[i]+'|'+df.iloc[0,i]) # make and add new name to list
df.columns = newcols # assign column names
df = df.iloc[1:,:] # exclude first row
print(df)
輸出:
2013K2|ABC1 2013K3|ABC2 2013K4|ABC3 2013K5|ABC4
1 324 5435 543 543
2 6543 543 657 765
3 765 876 876 9876
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.