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
添加回答
举报