Python Pandas-映射函数的错误行为

Python Pandas-映射函数的错误行为,python,pandas,datetime,python-datetime,Python,Pandas,Datetime,Python Datetime,在使用map应用函数时,我遇到了一个非常奇怪的“bug” 这是可用于重现问题的示例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

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

这是可用于重现问题的示例
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函数返回的时间戳是相同的,并且不正确。我想知道为什么
列表理解
返回正确的值。这可能不是一个bug,只是我在map函数中犯了一些错误,但是,我真的很想使用它,因为它大大加快了计算速度


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

映射函数工作正常。您正在传递一个属于datetime.datetime类的“unbound”方法,即
datetime.datetime.timestamp
,并且您正在向它传递一些
pandas.\u libs.tslibs.timestamp.timestamp
对象。你不应该期望它会起作用,我很惊讶它没有抛出错误

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

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

我真的没有看到复制品。我知道如何在时间戳中转换日期,我在问为什么map@alollzb不正确,但如果你问我
我真的很想使用它,因为它大大加快了计算速度。如果
.map
是真的,你就无法打败
.astype(int64)/10**9
的性能,我也已经能够测试它了。无论如何,问题的标题是明确的<代码>映射函数的错误行为
与日期时间转换无关。我可能解释错了,但这不是这个问题的答案@阿洛兹