Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在数据帧中将时间戳转换为datetime.date?_Python_Date_Datetime_Pandas - Fatal编程技术网

Python 如何在数据帧中将时间戳转换为datetime.date?

Python 如何在数据帧中将时间戳转换为datetime.date?,python,date,datetime,pandas,Python,Date,Datetime,Pandas,我需要在日期上将两个数据框合并在一起,但它们当前有不同的日期类型。1是时间戳(从excel导入),另一个是datetime.date 有什么建议吗 我已经尝试了pd.to_datetime().date,但这只适用于单个项目(例如df.ix[0,0]),它不允许我应用于整个系列(例如df['mydates'])或数据框。如果需要datetime.date对象。。。然后使用时间戳的.date属性让他们完成 pd.to_datetime(df['mydates']).date 我从一位同事那里得到

我需要在日期上将两个数据框合并在一起,但它们当前有不同的日期类型。1是时间戳(从excel导入),另一个是
datetime.date

有什么建议吗


我已经尝试了
pd.to_datetime().date
,但这只适用于单个项目(例如
df.ix[0,0]
),它不允许我应用于整个系列(例如
df['mydates']
)或数据框。

如果需要
datetime.date
对象。。。然后使用
时间戳的
.date
属性让他们完成

pd.to_datetime(df['mydates']).date

我从一位同事那里得到了一些帮助

这似乎解决了上述问题


pd.to_datetime(df['mydates']).apply(lambda x:x.date())

另一个问题被标记为dupe,指向这个问题,但它没有包括这个答案,这似乎是最简单的答案(在发布/回答这个问题时可能还不存在这个方法):


pandas文档展示了一种“将时间戳对象转换为本机Python datetime对象”的方法。

当我遇到类似问题时,我发现以下方法最有效。例如,使用数据帧
df
,在列
ts
中有一系列时间映射

df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
这样就可以进行转换,您可以省去datetimes的
.date()
后缀。然后更改数据帧上的列。就像这样

df.loc[:, 'ts'] = df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
对我来说,这很有效:

from datetime import datetime
df[ts] = [datetime.fromtimestamp(x) for x in df[ts]]

比上面简单得多:

df['mydates'].dt.date

假设时间列为时间戳整数毫秒格式

1天=86400000毫秒

给你:

day_divider = 86400000

df['time'] = df['time'].values.astype(dtype='datetime64[ms]') # for msec format

df['time'] = (df['time']/day_divider).values.astype(dtype='datetime64[D]') # for day format

pd.to_datetime(df['mydates'])Hi@piRSquared。不幸的是,这不起作用。pd.todatetime(df['my_dates'])在我访问系列中的1个元素时仍然返回pandas.tslib.Timestamp(例如,如果我将其保存为一个新的数据帧作为df2,类型(df2.ix[0,0]),并且我需要它是datetime.date,这似乎也不起作用。然而,如果输入是一个包含一行的序列,
s.date.date()
对我有效。
pd.to\u datetime(df['mydates'])apply(lambda x:x.date())
这应该有效