使用Pandas的DatetimeIndex有助于在DataFrame中创建datetime列

时间:2016-07-01 21:03:04

标签: datetime pandas

我发现我们可以通过以下方式在Pandas DataFrame中创建日期时间列:

>>> dt1 = pandas.DatetimeIndex(["2016-03-04 15:01:49",
                                "2016-03-05 23:54:22",
                                "2016-04-03 21:22:08",
                                "2016-04-03 21:22:08",
                                "2016-03-05 23:54:22"])
>>> df1 = pandas.DataFrame([["firefly", 37],
                            ["wood", 47],
                            ["snowflake", 12],
                            ["waterfall", 67],
                            ["wind", 208]],
                           columns = ["what", "count"])
>>> df1['when_last'] = dt1
df1
        what  count           when_last
0    firefly     37 2016-03-04 15:01:49
1       wood     47 2016-03-05 23:54:22
2  snowflake     12 2016-04-03 21:22:08
3  waterfall     67 2016-04-03 21:22:08
4       wind    208 2016-03-05 23:54:22

这是我的问题: 这是一个合法的结构吗?我的一部分困惑是:DatetimeIndex应该能够容纳重复日期和无序日期,我们没有把它作为索引时?

这是我的用例,促成了上面的实验: 我有一个我想用Pandas处理的表,它有很多(但是 不是太多的领域,大约40多个。 该表本身包含数万条记录或更多。 该表的原始格式为文本CSV。 处理基本上与SQL类分析一致 (过滤,加入,排序等),熊猫拥有不错的能力。 在这些字段中有几个日期时间字段(存储为UNIX CSV文件中的时间戳),其中三个或四个。 这些都不适合用作Dataframe行的索引; 它们是与属于记录的几个事件相关的日期,和 它们可以有重复,因为事件可以完全标记 相同的日期时间值。

有几个stackoverflow用户建议,如果我们一个一个地解析日期,直接用read_csv date_parser参数解析日期时间实际上很差(并且性能也可能是平庸的),比如this one。鉴于原始列只包含UNIX时间戳,我们应该能够获得高性能。另一个问题是to_datetime不支持将时区归于UNIX时间戳。上面的示例没有时区,但我希望将其包含在我的实际案例中。

1 个答案:

答案 0 :(得分:0)

  

这是一个合法的构造吗?