Python to_datetime(从int / float中的3列开始)

时间:2019-10-20 09:23:48

标签: python pandas date datetime

我的数据集中有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)

如何在第一行中添加月份和日期列?

1 个答案:

答案 0 :(得分:1)

  1. int和str都很好,您只需要更改Day列的float类型即可。无论如何,这都是不现实的,我们不在日期中小数天。

  2. 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