【发布时间】:2020-05-24 14:37:11
【问题描述】:
我想创建从 1 个站点到另一个站点的时间矩阵。我已经完成了这个矩阵,但我在数据帧的每一列和每一行都有一些负时间增量。看起来是这样的(它是它的一部分):
+=========================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+===========================+
| Arrival Station | San Francisco | 22nd Street | Bayshore | South San Francisco | San Bruno | Millbrae Transit Center | Broadway | Burlingame | San Mateo | Hayward Park | Hillsdale | Belmont | San Carlos | Redwood City | Atherton | Menlo Park | Palo Alto | Stanford | California Ave. | San Antonio | Mountain View | Sunnyvale | Lawrence | Santa Clara | College Park | San Jose Diridon | Tamien | Capitol | Blossom Hill | Morgan Hill | San Martin | Gilroy |
+=========================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+=============================+===========================+
| San Francisco | 0 days 00:00:00.000000000 | 0 days 00:05:00.000000000 | 0 days 00:10:00.000000000 | 0 days 00:17:00.000000000 | 0 days 00:21:00.000000000 | 0 days 00:25:00.000000000 | 0 days 00:29:00.000000000 | 0 days 00:32:00.000000000 | 0 days 00:35:00.000000000 | 0 days 00:39:00.000000000 | 0 days 00:42:00.000000000 | 0 days 00:46:00.000000000 | 0 days 00:49:00.000000000 | 0 days 00:54:00.000000000 | 0 days 00:59:00.000000000 | 0 days 01:02:00.000000000 | 0 days 01:06:00.000000000 | 0 days 01:08:00.000000000 | 0 days 01:09:00.000000000 | 0 days 01:13:00.000000000 | 0 days 01:18:00.000000000 | 0 days 01:23:00.000000000 | 0 days 01:27:00.000000000 | 0 days 01:32:00.000000000 | 0 days 01:35:00.000000000 | 0 days 01:44:00.000000000 | 0 days 01:50:00.000000000 | 0 days 01:57:00.000000000 | 0 days 02:03:00.000000000 | 0 days 02:16:00.000000000 | 0 days 02:22:00.000000000 | 0 days 02:38:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| 22nd Street | -1 days +23:55:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:05:00.000000000 | 0 days 00:12:00.000000000 | 0 days 00:16:00.000000000 | 0 days 00:20:00.000000000 | 0 days 00:24:00.000000000 | 0 days 00:27:00.000000000 | 0 days 00:30:00.000000000 | 0 days 00:34:00.000000000 | 0 days 00:37:00.000000000 | 0 days 00:41:00.000000000 | 0 days 00:44:00.000000000 | 0 days 00:49:00.000000000 | 0 days 00:54:00.000000000 | 0 days 00:57:00.000000000 | 0 days 01:01:00.000000000 | 0 days 01:03:00.000000000 | 0 days 01:04:00.000000000 | 0 days 01:08:00.000000000 | 0 days 01:13:00.000000000 | 0 days 01:18:00.000000000 | 0 days 01:22:00.000000000 | 0 days 01:27:00.000000000 | 0 days 01:30:00.000000000 | 0 days 01:39:00.000000000 | 0 days 01:45:00.000000000 | 0 days 01:52:00.000000000 | 0 days 01:58:00.000000000 | 0 days 02:11:00.000000000 | 0 days 02:17:00.000000000 | 0 days 02:33:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| Bayshore | -1 days +23:50:00.000000000 | -1 days +23:55:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:07:00.000000000 | 0 days 00:11:00.000000000 | 0 days 00:15:00.000000000 | 0 days 00:19:00.000000000 | 0 days 00:22:00.000000000 | 0 days 00:25:00.000000000 | 0 days 00:29:00.000000000 | 0 days 00:32:00.000000000 | 0 days 00:36:00.000000000 | 0 days 00:39:00.000000000 | 0 days 00:44:00.000000000 | 0 days 00:49:00.000000000 | 0 days 00:52:00.000000000 | 0 days 00:56:00.000000000 | 0 days 00:58:00.000000000 | 0 days 00:59:00.000000000 | 0 days 01:03:00.000000000 | 0 days 01:08:00.000000000 | 0 days 01:13:00.000000000 | 0 days 01:17:00.000000000 | 0 days 01:22:00.000000000 | 0 days 01:25:00.000000000 | 0 days 01:34:00.000000000 | 0 days 01:40:00.000000000 | 0 days 01:47:00.000000000 | 0 days 01:53:00.000000000 | 0 days 02:06:00.000000000 | 0 days 02:12:00.000000000 | 0 days 02:28:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| South San Francisco | -1 days +23:43:00.000000000 | -1 days +23:48:00.000000000 | -1 days +23:53:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:04:00.000000000 | 0 days 00:08:00.000000000 | 0 days 00:12:00.000000000 | 0 days 00:15:00.000000000 | 0 days 00:18:00.000000000 | 0 days 00:22:00.000000000 | 0 days 00:25:00.000000000 | 0 days 00:29:00.000000000 | 0 days 00:32:00.000000000 | 0 days 00:37:00.000000000 | 0 days 00:42:00.000000000 | 0 days 00:45:00.000000000 | 0 days 00:49:00.000000000 | 0 days 00:51:00.000000000 | 0 days 00:52:00.000000000 | 0 days 00:56:00.000000000 | 0 days 01:01:00.000000000 | 0 days 01:06:00.000000000 | 0 days 01:10:00.000000000 | 0 days 01:15:00.000000000 | 0 days 01:18:00.000000000 | 0 days 01:27:00.000000000 | 0 days 01:33:00.000000000 | 0 days 01:40:00.000000000 | 0 days 01:46:00.000000000 | 0 days 01:59:00.000000000 | 0 days 02:05:00.000000000 | 0 days 02:21:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| San Bruno | -1 days +23:39:00.000000000 | -1 days +23:44:00.000000000 | -1 days +23:49:00.000000000 | -1 days +23:56:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:04:00.000000000 | 0 days 00:08:00.000000000 | 0 days 00:11:00.000000000 | 0 days 00:14:00.000000000 | 0 days 00:18:00.000000000 | 0 days 00:21:00.000000000 | 0 days 00:25:00.000000000 | 0 days 00:28:00.000000000 | 0 days 00:33:00.000000000 | 0 days 00:38:00.000000000 | 0 days 00:41:00.000000000 | 0 days 00:45:00.000000000 | 0 days 00:47:00.000000000 | 0 days 00:48:00.000000000 | 0 days 00:52:00.000000000 | 0 days 00:57:00.000000000 | 0 days 01:02:00.000000000 | 0 days 01:06:00.000000000 | 0 days 01:11:00.000000000 | 0 days 01:14:00.000000000 | 0 days 01:23:00.000000000 | 0 days 01:29:00.000000000 | 0 days 01:36:00.000000000 | 0 days 01:42:00.000000000 | 0 days 01:55:00.000000000 | 0 days 02:01:00.000000000 | 0 days 02:17:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| Millbrae Transit Center | -1 days +23:35:00.000000000 | -1 days +23:40:00.000000000 | -1 days +23:45:00.000000000 | -1 days +23:52:00.000000000 | -1 days +23:56:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:04:00.000000000 | 0 days 00:07:00.000000000 | 0 days 00:10:00.000000000 | 0 days 00:14:00.000000000 | 0 days 00:17:00.000000000 | 0 days 00:21:00.000000000 | 0 days 00:24:00.000000000 | 0 days 00:29:00.000000000 | 0 days 00:34:00.000000000 | 0 days 00:37:00.000000000 | 0 days 00:41:00.000000000 | 0 days 00:43:00.000000000 | 0 days 00:44:00.000000000 | 0 days 00:48:00.000000000 | 0 days 00:53:00.000000000 | 0 days 00:58:00.000000000 | 0 days 01:02:00.000000000 | 0 days 01:07:00.000000000 | 0 days 01:10:00.000000000 | 0 days 01:19:00.000000000 | 0 days 01:25:00.000000000 | 0 days 01:32:00.000000000 | 0 days 01:38:00.000000000 | 0 days 01:51:00.000000000 | 0 days 01:57:00.000000000 | 0 days 02:13:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| Broadway | -1 days +23:31:00.000000000 | -1 days +23:36:00.000000000 | -1 days +23:41:00.000000000 | -1 days +23:48:00.000000000 | -1 days +23:52:00.000000000 | -1 days +23:56:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:03:00.000000000 | 0 days 00:06:00.000000000 | 0 days 00:10:00.000000000 | 0 days 00:13:00.000000000 | 0 days 00:17:00.000000000 | 0 days 00:20:00.000000000 | 0 days 00:25:00.000000000 | 0 days 00:30:00.000000000 | 0 days 00:33:00.000000000 | 0 days 00:37:00.000000000 | 0 days 00:39:00.000000000 | 0 days 00:40:00.000000000 | 0 days 00:44:00.000000000 | 0 days 00:49:00.000000000 | 0 days 00:54:00.000000000 | 0 days 00:58:00.000000000 | 0 days 01:03:00.000000000 | 0 days 01:06:00.000000000 | 0 days 01:15:00.000000000 | 0 days 01:21:00.000000000 | 0 days 01:28:00.000000000 | 0 days 01:34:00.000000000 | 0 days 01:47:00.000000000 | 0 days 01:53:00.000000000 | 0 days 02:09:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
| Burlingame | -1 days +23:28:00.000000000 | -1 days +23:33:00.000000000 | -1 days +23:38:00.000000000 | -1 days +23:45:00.000000000 | -1 days +23:49:00.000000000 | -1 days +23:53:00.000000000 | -1 days +23:57:00.000000000 | 0 days 00:00:00.000000000 | 0 days 00:03:00.000000000 | 0 days 00:07:00.000000000 | 0 days 00:10:00.000000000 | 0 days 00:14:00.000000000 | 0 days 00:17:00.000000000 | 0 days 00:22:00.000000000 | 0 days 00:27:00.000000000 | 0 days 00:30:00.000000000 | 0 days 00:34:00.000000000 | 0 days 00:36:00.000000000 | 0 days 00:37:00.000000000 | 0 days 00:41:00.000000000 | 0 days 00:46:00.000000000 | 0 days 00:51:00.000000000 | 0 days 00:55:00.000000000 | 0 days 01:00:00.000000000 | 0 days 01:03:00.000000000 | 0 days 01:12:00.000000000 | 0 days 01:18:00.000000000 | 0 days 01:25:00.000000000 | 0 days 01:31:00.000000000 | 0 days 01:44:00.000000000 | 0 days 01:50:00.000000000 | 0 days 02:06:00.000000000 |
+-------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+---------------------------+
为了创建这个表,我使用了代码:
from datetime import datetime,timedelta
import numpy as np
def format_timedelta(td):
print(td)
if td < timedelta(0):
return '-' + format_timedelta(-td)
else:
# Change this to format positive timedeltas the way you want
return str(td)
def transform_dataframe1():
with open('/Users/miss_evgenia/Downloads/Caltrain Metrics - Sheet6.csv', "r") as input_data:
station_times = pd.read_csv(input_data)
for i in range(len(station_times)-1):
station_times['Time between stations in min'][i] = datetime.strptime(station_times['Time between stations in min'][i],"%H:%M:%S")
station_times['Time between stations in min'][i] = timedelta(minutes=station_times['Time between stations in min'][i].minute)
# to stop gilroy appearing twice
station_times.drop(station_times.tail(1).index,inplace=True)
cumulative_distances = station_times['Time between stations in min'].cumsum()
distance_matrix = cumulative_distances.values - cumulative_distances.values[:, None]
distance_matrix = pd.DataFrame(distance_matrix, index=station_times["Arrival Station"], columns=station_times["Arrival Station"])
return distance_matrix
我使用的现有数据:
+=========================+=========================+==============================+
| Departure Station | Arrival Station | Time between stations in min |
+=========================+=========================+==============================+
| | San Francisco | 0:00:00 |
+-------------------------+-------------------------+------------------------------+
| San Francisco | 22nd Street | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| 22nd Street | Bayshore | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Bayshore | South San Francisco | 0:07:00 |
+-------------------------+-------------------------+------------------------------+
| South San Francisco | San Bruno | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| San Bruno | Millbrae Transit Center | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Millbrae Transit Center | Broadway | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Broadway | Burlingame | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| Burlingame | San Mateo | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| San Mateo | Hayward Park | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Hayward Park | Hillsdale | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| Hillsdale | Belmont | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Belmont | San Carlos | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| San Carlos | Redwood City | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Redwood City | Atherton | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Atherton | Menlo Park | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| Menlo Park | Palo Alto | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Palo Alto | Stanford | 0:02:00 |
+-------------------------+-------------------------+------------------------------+
| Stanford | California Ave. | 0:01:00 |
+-------------------------+-------------------------+------------------------------+
| California Ave. | San Antonio | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| San Antonio | Mountain View | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Mountain View | Sunnyvale | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Sunnyvale | Lawrence | 0:04:00 |
+-------------------------+-------------------------+------------------------------+
| Lawrence | Santa Clara | 0:05:00 |
+-------------------------+-------------------------+------------------------------+
| Santa Clara | College Park | 0:03:00 |
+-------------------------+-------------------------+------------------------------+
| College Park | San Jose Diridon | 0:09:00 |
+-------------------------+-------------------------+------------------------------+
| San Jose Diridon | Tamien | 0:06:00 |
+-------------------------+-------------------------+------------------------------+
| Tamien | Capitol | 0:07:00 |
+-------------------------+-------------------------+------------------------------+
| Capitol | Blossom Hill | 0:06:00 |
+-------------------------+-------------------------+------------------------------+
| Blossom Hill | Morgan Hill | 0:13:00 |
+-------------------------+-------------------------+------------------------------+
| Morgan Hill | San Martin | 0:06:00 |
+-------------------------+-------------------------+------------------------------+
| San Martin | Gilroy | 0:16:00 |
+-------------------------+-------------------------+------------------------------+
| Gilroy | Gilroy | 0:00:00 |
+-------------------------+-------------------------+------------------------------+
所以主要问题是如何将所有负时间增量更改为分钟,而其他时间增量仅更改为没有天的分钟。我尝试了很多,但没有得到任何结果。
谢谢!
【问题讨论】:
标签: python pandas numpy dataframe timedelta