python - 使用 pandas 数据框列中的值更改 DateTime 对象的日期
问题描述
假设我有一个包含 10,000 多行的数据框,Day
其中Month
包含Month
一个日期时间对象。对象中“day”的值Month
不正确,因此我想用Day
列中的相应值替换它。我该怎么做呢?
import datetime as dt
df = pd.DataFrame({
'Month': [dt.date(2017,9,1),dt.date(2017,11,1),dt.date(2017,9,1)],
'Day': [7, 21,14],
})
Day Month
7 2017-09-01
21 2017-11-01
14 2017-09-01
所以我希望最终结果看起来像这样:
Day Month New_Col
7 2017-09-01 2017-09-07
21 2017-11-01 2017-11-21
14 2017-09-01 2017-09-14
解决方案
将列转换Month
为日期时间to_datetime
并添加列Day
转换to_timedelta
的 s:
df['New_Col'] = pd.to_datetime(df['Month']) + pd.to_timedelta(df['Day'], unit='d')
print (df)
Month Day New_Col
0 2017-09-01 7 2017-09-08
1 2017-11-01 21 2017-11-22
2 2017-09-01 14 2017-09-15
如果需要减去一天:
df['New_Col'] = pd.to_datetime(df['Month']) + pd.to_timedelta(df['Day'] - 1, unit='d')
print (df)
Month Day New_Col
0 2017-09-01 7 2017-09-07
1 2017-11-01 21 2017-11-21
2 2017-09-01 14 2017-09-14
推荐阅读
- spring-boot - Kafka 重试如何与 request.timeout 一起工作?
- rest - 我可以通过 Http Patch 方法使用查询参数吗?
- javascript - 更改 ant design radio 输入焦点
- reactjs - 我在尝试实施 JWT 身份验证时收到此错误,错误:超过最大更新深度
- r - 如何在一个循环中选择最大元素在 r 中编写一个双循环?
- apache-spark-sql - 获取格式化为 yyyyMMdd 的字符串的 M/d/yyyy 或 MM/dd/yyyy 字符串
- r - R 子集/保留至少包含两个特定文本字符串的所有行
- python - 在 Jupyter Lab for New Environment 中导入 Pandas 时出现错误消息
- python - 代码在编写时有效,但在定义时无效
- javascript - 更改 Extjs GridPanel 顶栏分页工具的刷新按钮处理程序