亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從所有排列的數據框中創建一個矩陣

從所有排列的數據框中創建一個矩陣

慕少森 2022-12-06 16:48:01
我有一個數據框,用于 Caltrain 中 2 個車站的所有可能組合以及它們之間的行程票價。我想制作一個價值矩陣,但無法理解如何制作。數據看起來像這樣:我試圖用 pd.Dataframe(index = , columns =) 做一些事情,但它不起作用。一定是這樣的:+---------------+----------------+-----------+|    station    |  San Francisco |  Broadway |+---------------+----------------+-----------+| San Francisco |  0             |  value    || Broadway      | value          |  0        |+---------------+----------------+-----------+謝謝!
查看完整描述

2 回答

?
慕工程0101907

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)


查看完整回答
反對 回復 2022-12-06
?
搖曳的薔薇

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


查看完整回答
反對 回復 2022-12-06
  • 2 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號