熊猫-地图功能的错误行为

时间:2019-01-29 20:40:04

标签: python pandas datetime python-datetime

在使用map应用函数时,我遇到了一个非常奇怪的“错误”。

这是示例csv,可用于重现该问题:

DATE
2017-03-12 02:59:00
2017-03-12 03:59:00

以下是我正在使用的代码:

import pandas as pd
import datetime

df = pd.read_csv('example.csv', parse_dates = ['DATE'])

df['TIMESTAMP_C'] = [str(x.timestamp()) for x in df['DATE']]
df['TIMESTAMP_H'] = df['DATE'].map(datetime.datetime.timestamp).map(str)

以下是输出数据帧:

                 DATE   TIMESTAMP_C   TIMESTAMP_H
0 2017-03-12 02:59:00  1489287540.0  1489309140.0
1 2017-03-12 03:59:00  1489291140.0  1489309140.0

因此,如您所见,map函数返回的时间戳是相同的,并且是不正确的。我想知道为什么list comprehension返回正确的值。可能不是错误,只是我在使用map函数时犯了一些错误,但是,我真的很想使用它,因为它可以大大加快计算速度。

编辑:我不是在问怎么做,而是在问我为什么这样做会返回不同的结果

1 个答案:

答案 0 :(得分:2)

地图功能运行正常。您正在传递属于datetime.datetime类(即datetime.datetime.timestamp)的“未绑定”方法,并且正在传递一些pandas._libs.tslibs.timestamps.Timestamp对象。您不应该期望它能正常工作,但我很惊讶它没有抛出错误。

相反,您想使用.timestamp类的pd.TimeStamp方法,因此:

In [3]: df.DATE.map(pd.Timestamp.timestamp).map(str)
Out[3]:
0    1489287540.0
1    1489291140.0
Name: DATE, dtype: object