2 回答

TA貢獻1887條經驗 獲得超5個贊
你需要使用df.pivot().
df.pivot(index='SOURCE_STN', columns='DEST_STN', values='RC1($)').fillna(0)
編輯:
對于具有重復項的數據框,您需要改用并在參數df.pivot_table()中指定聚合函數。aggfunc
import numpy as np
df.pivot_table(index='SOURCE_STN', columns='DEST_STN', values='RC1($)', aggfunc=np.sum).fillna(0)

TA貢獻1793條經驗 獲得超6個贊
您可以通過在 pandas 中使用pivot_table來實現這一點。
data_frame.pivot_table('RC1($)', 'SOURCE_STN', 'DEST_STN').fillna(0)
解釋:
您期望的矩陣可以通過以下代碼實現,因為排列仍然保留,同時還通過獲取重復項的平均值來管理重復項。
import pandas as pd
import numpy as np
route_table = pd.read_csv("path_to_file.csv")
route_matrix = route_table.pivot_table('RC1($)', 'SOURCE_STN', 'DEST_STN', aggfunc=np.mean).fillna(0)
print(route_matrix)
輸出:
DEST_STN 22nd Street Atherton ... Sunnyvale Tamien
SOURCE_STN ...
22nd Street 0.00 8.25 ... 8.25 10.5
Atherton 3.75 0.00 ... 8.25 10.5
Bayshore 3.75 8.25 ... 8.25 10.5
Belmont 3.75 8.25 ... 8.25 10.5
Blossom Hill 3.75 8.25 ... 8.25 10.5
Broadway 3.75 8.25 ... 8.25 10.5
Burlingame 3.75 8.25 ... 8.25 10.5
California Ave. 3.75 8.25 ... 8.25 10.5
Capitol 3.75 8.25 ... 8.25 10.5
College Park 3.75 8.25 ... 8.25 10.5
Gilroy 3.75 8.25 ... 8.25 10.5
Hillsdale 3.75 8.25 ... 8.25 10.5
為了更好地理解透視表的不同視角:
備用代碼
route_matrix = route_table.pivot_table('RC1($)', 'DEST_STN', 'SOURCE_STN', aggfunc=np.mean).fillna(0)
print(route_matrix)
輸出
SOURCE_STN 22nd Street Atherton ... Sunnyvale Tamien
DEST_STN ...
22nd Street 0.00 3.75 ... 3.75 3.75
Atherton 8.25 0.00 ... 8.25 8.25
Bayshore 3.75 3.75 ... 3.75 3.75
Belmont 6.00 6.00 ... 6.00 6.00
Blossom Hill 12.75 12.75 ... 12.75 12.75
Broadway 6.00 6.00 ... 6.00 6.00
Burlingame 6.00 6.00 ... 6.00 6.00
California Ave. 8.25 8.25 ... 8.25 8.25
Capitol 12.75 12.75 ... 12.75 12.75
College Park 10.50 10.50 ... 10.50 10.50
Gilroy 15.00 15.00 ... 15.00 15.00
添加回答
舉報