当索引为日期时间时如何访问字典?

时间:2018-07-29 15:08:58

标签: python datetime dictionary

我有多个csv文件,每个文件包含两列。第一列包含时间戳,第二列包含测量值。

让我们假设csv文件看起来像这样:

Date,Temperature (Celsius)
2018-07-24T20:45:31,28.86
2018-07-24T20:35:31,29.06
2018-07-24T20:25:31,29.19
2018-07-24T20:15:32,29.31
2018-07-24T20:05:31,29.48
2018-07-24T19:55:31,29.58
2018-07-24T19:45:31,29.82
2018-07-24T19:35:32,30.32
2018-07-24T19:25:31,31.00

我这样导入它:

df = pd.read_csv(csv-file, sep=',', header = 0, usecols=[0, 1], parse_dates=[0], infer_datetime_format=True)
dd = df.set_index('Date').T.to_dict()

我想以后方便,当我在多个文件中搜索相同的键(相同的时间戳)以合并它们时。 但是我无法访问字典。键被识别为时间戳。

dd.keys()

dict_keys([Timestamp('2018-07-24 20:45:31'), Timestamp('2018-07-24 20:35:31'), Timestamp('2018-07-24 20:25:31'), Timestamp('2018-07-24 20:15:32'), Timestamp('2018-07-24 20:05:31'), Timestamp('2018-07-24 19:55:31'), Timestamp('2018-07-24 19:45:31'), Timestamp('2018-07-24 19:35:32'), Timestamp('2018-07-24 19:25:31')])

如何访问值?

dd["2018-07-24 20:45:31"]["Temperature (Celsius)"]

不起作用,所以我尝试了

dd[Timestamp("2018-07-24 20:45:31")]["Temperature (Celsius)"]

也不起作用。

我想知道是否可以禁止使用时间戳作为键,但是如果不是,那么我该如何访问数据?

1 个答案:

答案 0 :(得分:1)

您看到的每个Timestamp键都是pandas.Timestamp的实例。您应该使用pd.Timestamp传递密钥,如下所示:

import pandas as pd

df = pd.read_csv(
    'file.csv', sep=',', header = 0, usecols=[0, 1], parse_dates=[0], infer_datetime_format=True
)
dd = df.set_index('Date').T.to_dict()

print(dd[pd.Timestamp('2018-07-24 20:45:31')]['Temperature (Celsius)']) # prints 28.86