Pandas - 地图函数的错误行为
Pandas - wrong behavior of map function
我在使用 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 函数 return 的时间戳是相同的,但不正确。我想知道为什么 list comprehension
return 是正确的。这可能不是错误,只是我在使用 map 函数时犯了一些错误,但是,我真的很想使用它,因为它可以大大加快计算速度。
编辑:我不是在问怎么做,我是在问为什么我这样做return 不同的结果
地图功能运行良好。您正在传递一个 "unbound" 方法,它属于 datetime.datetime class,即 datetime.datetime.timestamp
,并且您正在向它传递一些 pandas._libs.tslibs.timestamps.Timestamp
对象。你不应该期望它会起作用,我很惊讶它没有抛出错误。
相反,您想使用 pd.TimeStamp
class 的 .timestamp
方法,所以:
In [3]: df.DATE.map(pd.Timestamp.timestamp).map(str)
Out[3]:
0 1489287540.0
1 1489291140.0
Name: DATE, dtype: object
我在使用 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 函数 return 的时间戳是相同的,但不正确。我想知道为什么 list comprehension
return 是正确的。这可能不是错误,只是我在使用 map 函数时犯了一些错误,但是,我真的很想使用它,因为它可以大大加快计算速度。
编辑:我不是在问怎么做,我是在问为什么我这样做return 不同的结果
地图功能运行良好。您正在传递一个 "unbound" 方法,它属于 datetime.datetime class,即 datetime.datetime.timestamp
,并且您正在向它传递一些 pandas._libs.tslibs.timestamps.Timestamp
对象。你不应该期望它会起作用,我很惊讶它没有抛出错误。
相反,您想使用 pd.TimeStamp
class 的 .timestamp
方法,所以:
In [3]: df.DATE.map(pd.Timestamp.timestamp).map(str)
Out[3]:
0 1489287540.0
1 1489291140.0
Name: DATE, dtype: object