python - 将天数 Int64 转换为日期

标签 python pandas date datetime timedelta

我需要将以下数据框(天)转换为实际日期。当 (days=0) 这是基准年 01/01/1960。您能否协助将天数列(从 1960 年 1 月 1 日开始的天数)转换回日期?

df=pd.DataFrame([-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366],columns=['days'])
df['base_year']=datetime.date(1960,1,1)

最佳答案

回过头来看,MaxU的回答更好。以下内容可能对旧版 Pandas 有用。

有几种方法可以做到这一点。一种是将 datetime.timedelta 与列表理解一起使用:

from datetime import timedelta
import pandas as pd

>>> [pd.to_datetime('01/01/1960') + timedelta(d) for d in [-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366]]
[Timestamp('1958-01-01 00:00:00'),
 Timestamp('1958-04-01 00:00:00'),
 Timestamp('1958-07-01 00:00:00'),
 Timestamp('1961-04-02 00:00:00'),
 Timestamp('1959-01-01 00:00:00'),
 Timestamp('1960-10-02 00:00:00'),
 Timestamp('1959-07-01 00:00:00'),
 Timestamp('1959-10-01 00:00:00'),
 Timestamp('1960-01-01 00:00:00'),
 Timestamp('1960-04-01 00:00:00'),
 Timestamp('1960-07-01 00:00:00'),
 Timestamp('1960-10-01 00:00:00'),
 Timestamp('1961-01-01 00:00:00')]

所以你可以使用

>>> DataFrame([pd.to_datetime('01/01/1960') + timedelta(d) for d in [-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366]],columns=['days'])
    days
0   1958-01-01
1   1958-04-01
2   1958-07-01
3   1961-04-02
4   1959-01-01
5   1960-10-02
6   1959-07-01
7   1959-10-01
8   1960-01-01
9   1960-04-01
10  1960-07-01
11  1960-10-01
12  1961-01-01

关于python - 将天数 Int64 转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840868/

相关文章:

Python:如何将数字映射到列中的唯一项目(枚举唯一对象)?

python - 如何在指定的时间间隔使用 shift 填充 pandas 中的缺失值?

python - 比较两个 pandas dataframe 单元格,如果相等 ==,则复制其他内容 - 导致错误

python - 使用OpenGL位图字体时是否可以获取字符的宽度?

python - 如何根据同一模型中其他字段的值设置django模型字段值

Python通过islice循环读取20条记录

c# - 计算两个日期之间的差异(天数)?

java SimpleDateFormat 模式与参数不同

python - 日期比较/连续日期分组

python - a 变为 z,b 变为 y。 abcd 在 python 中变成 zyxw ...等