我想將資料幀(df )中的列( Azi_0 到 Azi_47,Dist_0 到 Dist_47 )轉換為new_df中的兩列(方位角,距離)?
Azi = [f"Azi_{i}" for i in range(47)]
dist = [f"Dist_{i}" for i in range(47)]
樣本資料框,df:

預期輸出,new_df:
| Current_Sim_Az_obj1 | Current_Sim_distance_r_obj1 | 方位角 | 距離 |
|---|---|---|---|
| -60 | 3.950372041 | -59.73007665 | 3.07 |
| -60 | 3.950372041 | -59.73007665 | 3.07 |
| -60 | 6.950372041 | -59.4701257 | 7.89 |
| -60 | 6.950372041 | -59.89004647 | 7.765 |
| -60 | 8.950372041 | -59.64009363 | 8.345 |
| -60 | 8.950372041 | -59.58010495 | 8.425 |
| -60 | 8.950372041 | -59.58010495 | 8.425 |
| -55 | 2.38397709 | -55.06095763 | 3.14 |
| -55 | 2.38397709 | -55.21092934 | 3.065 |
| -55 | 2.38397709 | -55.21092934 | 3.065 |
| -55 | 2.38397709 | -55.2609199 | 3.03 |
| -55 | 2.38397709 | -55.2609199 | 3.03 |
| -55 | 2.38397709 | -55.2609199 | 3.03 |
| -55 | 2.38397709 | -55.2609199 | 3.03 |
| -55 | 2.38397709 | -55.03096329 | 3.105 |
| -55 | 2.38397709 | -55.03096329 | 3.105 |
| -55 | 2.38397709 | -55.32090858 | 3 |
| -55 | 2.38397709 | -55.32090858 | 3 |
| -55 | 2.38397709 | -55.27091802 | 3.12 |
| -55 | 2.38397709 | -55.27091802 | 3.12 |
| -55 | 2.38397709 | -55.8508086 | 3.09 |
| -55 | 2.38397709 | -55.8508086 | 3.09 |
| -55 | 2.38397709 | -55.57086142 | 3.065 |
| -55 | 2.38397709 | -55.57086142 | 3.065 |
如何將幾列合并為一列?
uj5u.com熱心網友回復:
您本質上是在詢問如何將某些 df-columns 的值合并為一列 - 您可以這樣做:
from random import choice
import pandas as pd
# all azimuth names
azi_names = [f"Azi_{i}" for i in range(5)]
# all distance names
dist_names = [f"Dist_{i}" for i in range(5)]
df = pd.DataFrame(columns = azi_names dist_names)
# put some values in
for i in range(20):
k = choice(range(5))
df = df.append({f"Azi_{k}": i, f"Dist_{k}": i}, ignore_index=True)
print(df)
隨機創建:
Azi_0 Azi_1 Azi_2 Azi_3 Azi_4 Dist_0 Dist_1 Dist_2 Dist_3 Dist_4
0 NaN NaN NaN 0.0 NaN NaN NaN NaN 0.0 NaN
1 NaN 1.0 NaN NaN NaN NaN 1.0 NaN NaN NaN
2 2.0 NaN NaN NaN NaN 2.0 NaN NaN NaN NaN
3 NaN NaN 3.0 NaN NaN NaN NaN 3.0 NaN NaN
4 NaN 4.0 NaN NaN NaN NaN 4.0 NaN NaN NaN
5 NaN NaN NaN NaN 5.0 NaN NaN NaN NaN 5.0
6 6.0 NaN NaN NaN NaN 6.0 NaN NaN NaN NaN
7 NaN 7.0 NaN NaN NaN NaN 7.0 NaN NaN NaN
8 NaN 8.0 NaN NaN NaN NaN 8.0 NaN NaN NaN
9 9.0 NaN NaN NaN NaN 9.0 NaN NaN NaN NaN
10 NaN NaN 10.0 NaN NaN NaN NaN 10.0 NaN NaN
11 11.0 NaN NaN NaN NaN 11.0 NaN NaN NaN NaN
12 12.0 NaN NaN NaN NaN 12.0 NaN NaN NaN NaN
13 NaN NaN 13.0 NaN NaN NaN NaN 13.0 NaN NaN
14 NaN 14.0 NaN NaN NaN NaN 14.0 NaN NaN NaN
15 NaN NaN NaN 15.0 NaN NaN NaN NaN 15.0 NaN
16 NaN NaN NaN NaN 16.0 NaN NaN NaN NaN 16.0
17 NaN NaN 17.0 NaN NaN NaN NaN 17.0 NaN NaN
18 NaN NaN NaN NaN 18.0 NaN NaN NaN NaN 18.0
19 NaN NaN NaN 19.0 NaN NaN NaN NaN 19.0 NaN
要合并它并僅保留您使用的填充值
df2 = pd.DataFrame()
# propagates values and chooses first
df2["AZI"] = df[azi_names].bfill(axis=1).iloc[:, 0]
df2["DIS"] = df[dist_names].bfill(axis=1).iloc[:, 0]
print(df2)
得到一個合并的新df:
AZI DIS
0 0.0 0.0
1 1.0 1.0
2 2.0 2.0
3 3.0 3.0
4 4.0 4.0
5 5.0 5.0
6 6.0 6.0
7 7.0 7.0
8 8.0 8.0
9 9.0 9.0
10 10.0 10.0
11 11.0 11.0
12 12.0 12.0
13 13.0 13.0
14 14.0 14.0
15 15.0 15.0
16 16.0 16.0
17 17.0 17.0
18 18.0 18.0
19 19.0 19.0
歸因:靈感來自Erfan 對在pandas 資料框中將 2 列中的值合并為單列的回答
對于顯示的資料,您可能需要在 pandas 中用 NaN 替換空白值(空格) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466691.html
