我的数据集中有 3 列:年 (int)、月 (int)、日 (float)。 我想使用 to_datetime 创建一个日期列。
样本数据图片链接:https://ibb.co/kSyz4Y0
链接到整个数据集: https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv
我尝试将这 3 列转换为 3 个 int 或 3 个字符串,但总是得到相同的错误 - day 超出范围。
我的问题是:
1) 我应该采用什么列格式才能使用 to_datimetime - int 或 string?
2) 我可以或如何使用 to_datetime 从 3 列创建日期?或者我是否必须先连接这 3 列?
3) 如何消除这个“日期超出范围问题”? 我询问了 Google 博士,但没有一个解决方案适合我。
data['td'] = pd.to_datetime(data['year'])
data['tm2'] = td + timedelta(days=1)
如何在第一行添加月份和日期列?
最佳答案
int 和 str 都可以,您只需更改 Day 列的 float 类型即可。无论如何,这是不现实的,我们不会在日期中使用小数天。
date_series = pd.to_datetime(df)
将为您提供日期时间系列,然后您可以将其附加到初始数据帧。
测试代码:
import numpy as np
import pandas as pd
data = pd.DataFrame(columns=['Year', 'Month', 'Day'])
data = data.append({'Year': 2019, 'Month': 10, 'Day': 20}, ignore_index=True)
date_series = pd.to_datetime(data)
data['Date'] = date_series
输出数据
:
Year Month Day Date
0 2019 10 20 2019-10-20
编辑
import numpy as np
import pandas as pd
data = pd.DataFrame(columns=['Year', 'Month', 'Day', 'Gender', 'No. of Births'])
data = data.append({'Year': 2019, 'Month': 10, 'Day': 20, 'Gender': 'M', 'No. of Births': 5}, ignore_index=True)
date_prep = data.iloc[:, 0:3]
date_series = pd.to_datetime(date_prep)
data['Date'] = date_series
关于Python to_datetime(来自 3 列中的 int/float),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471605/