【发布时间】:2021-11-09 01:45:35
【问题描述】:
我有一个df,你可以通过运行这段代码来获得它:
import pandas as pd
from io import StringIO
dfs = """
BornDate
2 19850100
3 19000100
5 19850100
6 19000100
7 19820100
8 19850100
9 19000100
10 19790100
11 19850100
"""
df = pd.read_csv(StringIO(dfs.strip()), sep='\s+',
dtype={"BornDate": int})
df
输出是:
BornDate
2 19850100
3 19000100
5 19850100
6 19000100
7 19820100
8 19850100
9 19000100
10 19790100
11 19850100
我需要将BornDate 转换为基于变量ValuationDate 的年龄,
年龄等于ValuationDate 减去BornDate:
ValuationDate = 20201231
ValuationDate=pd.to_datetime(ValuationDate)
df['BornDate']=pd.to_datetime(df['BornDate'])
df['BornDate']=ValuationDate-df['BornDate']
df['BornDate']
但它会返回:
2 00:00:00.000351
3 00:00:00.001201
5 00:00:00.000351
6 00:00:00.001201
7 00:00:00.000381
8 00:00:00.000351
9 00:00:00.001201
10 00:00:00.000411
11 00:00:00.000351
Name: BornDate, dtype: timedelta64[ns]
输出应该是:
2 35.1
3 12.01
5 35.1
6 120.1
7 38.1
8 35.1
9 120.1
10 41.1
11 35.1
【问题讨论】:
-
为什么您的示例数据中没有天数 - 即,为什么天数为零且不大于或等于 1?
19850100 -
对于记录 3 和 6/9,我不明白它们为什么不同:12.01 还是 120.1?
-
@Corralien 抱歉,这是一个错误。谢谢你的回答。
标签: python pandas dataframe numpy datetime