我的数据集中有3列:年(int),月(int),天(float)。 我想使用to_datetime创建一个日期列。
链接到示例数据的图片:https://ibb.co/kSyz4Y0
链接到整个数据集: https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv
我试图将这3列转换为3个int或3个字符串,但是我总是遇到相同的错误-天超出了范围。
我的问题是:
1)我应该使用哪种列格式才能使用to_datimetime-int或string?
2)我可以或如何使用to_datetime从3列中创建日期?还是我必须先合并这三列?
3)如何消除此“超出范围的问题”? 我问Google博士,但没有一个解决方案对我有用。
data['td'] = pd.to_datetime(data['year'])
data['tm2'] = td + timedelta(days=1)
如何在第一行中添加月份和日期列?
答案 0 :(得分:1)
int和str都很好,您只需要更改Day列的float类型即可。无论如何,这都是不现实的,我们不在日期中小数天。
date_series = pd.to_datetime(df)
将为您提供datetime系列,您可以将其附加到初始数据框中。
测试代码:
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
data
的输出:
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