我有2个两个数据帧。
Date thing
201712.0 1
201801.0 2
“日期”列为float64类型,我试图将其分别转换为日期12/1/2017和1/1/2018。
Date thing2
12/16/2017 2
1/16/2018 3
此处的“日期”列是对象类型,我希望也可以转换为12/1/2017和1/1/2018。这里的想法是在之后进行pd.merge。
答案 0 :(得分:2)
您需要:
df['Date'] = pd.to_datetime(df['Date'], format='%Y%m') + pd.Timedelta(days=16)
输出:
Date thing
0 2017-12-16 1
1 2018-01-16 2
答案 1 :(得分:1)
使用pandas.to_datetime转换原始数据帧的'Date'
列:
df1 = pd.DataFrame([[201712.0, 1], [201801.0, 2]], columns=["Date", "thing"])
df2 = pd.DataFrame([["12/16/2017", 2], ["1/16/2018", 3]], columns=["Date", "thing2"])
df1['Date'] = pd.to_datetime(df1['Date'].astype(str), format='%Y%m.0')
df2['Date'] = pd.to_datetime(df2['Date']).apply(lambda x : x.replace(day=1))
在第一个数据帧中,'Date'
列被转换为字符串类型(.astype(str)
),以便使用格式字符串。
在第二个数据帧中,apply
函数用于将月份中的日期从开始时的第一天重置为第一天。