猿问

从所有排列的数据框中创建一个矩阵

我有一个数据框,用于 Caltrain 中 2 个车站的所有可能组合以及它们之间的行程票价。我想制作一个价值矩阵,但无法理解如何制作。数据看起来像这样:

我试图用 pd.Dataframe(index = , columns =) 做一些事情,但它不起作用。一定是这样的:



+---------------+----------------+-----------+

|    station    |  San Francisco |  Broadway |

+---------------+----------------+-----------+

| San Francisco |  0             |  value    |

| Broadway      | value          |  0        |

+---------------+----------------+-----------+


谢谢!


慕少森
浏览 121回答 2
2回答

慕工程0101907

你需要使用df.pivot().df.pivot(index='SOURCE_STN', columns='DEST_STN', values='RC1($)').fillna(0)编辑:对于具有重复项的数据框,您需要改用并在参数df.pivot_table()中指定聚合函数。aggfuncimport numpy as npdf.pivot_table(index='SOURCE_STN', columns='DEST_STN', values='RC1($)', aggfunc=np.sum).fillna(0)

摇曳的蔷薇

您可以通过在 pandas 中使用pivot_table来实现这一点。data_frame.pivot_table('RC1($)', 'SOURCE_STN', 'DEST_STN').fillna(0)解释:您期望的矩阵可以通过以下代码实现,因为排列仍然保留,同时还通过获取重复项的平均值来管理重复项。import pandas as pdimport numpy as nproute_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  TamienSOURCE_STN                                      ...                   22nd Street                     0.00      8.25  ...       8.25    10.5Atherton                        3.75      0.00  ...       8.25    10.5Bayshore                        3.75      8.25  ...       8.25    10.5Belmont                         3.75      8.25  ...       8.25    10.5Blossom Hill                    3.75      8.25  ...       8.25    10.5Broadway                        3.75      8.25  ...       8.25    10.5Burlingame                      3.75      8.25  ...       8.25    10.5California Ave.                 3.75      8.25  ...       8.25    10.5Capitol                         3.75      8.25  ...       8.25    10.5College Park                    3.75      8.25  ...       8.25    10.5Gilroy                          3.75      8.25  ...       8.25    10.5Hillsdale                       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  TamienDEST_STN                                        ...                   22nd Street                     0.00      3.75  ...       3.75    3.75Atherton                        8.25      0.00  ...       8.25    8.25Bayshore                        3.75      3.75  ...       3.75    3.75Belmont                         6.00      6.00  ...       6.00    6.00Blossom Hill                   12.75     12.75  ...      12.75   12.75Broadway                        6.00      6.00  ...       6.00    6.00Burlingame                      6.00      6.00  ...       6.00    6.00California Ave.                 8.25      8.25  ...       8.25    8.25Capitol                        12.75     12.75  ...      12.75   12.75College Park                   10.50     10.50  ...      10.50   10.50Gilroy                         15.00     15.00  ...      15.00   15.00
随时随地看视频慕课网APP

相关分类

Python
我要回答