Python to_datetime(来自 3 列中的 int/float)

标签 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 个字符串,但总是得到相同的错误 - 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)

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

最佳答案

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

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

相关文章:

python - 如何在 Azure 应用服务 Windows Web 应用上安装 psycopg2?

python - 字典中的 NumPy 切片表示法

python - 查找三个 DataFrame 中是否存在复合键,并相应地连接 DataFrame

python - 如何根据其他列值合并相同的列值?

date - 无论区域设置如何,强制日期为美国格式

javascript - 如何在jquery日期选择器字段附近创建前一天和后一天的链接

python - PyCharm 将多个 df 导出到单个 csv 文件

python - 获取箱形图的数据 - Matplotlib

python - 向数据框中添加几列,计算与其他 3 列相对应的中位数

java - Java 中的时间相减