【发布时间】:2021-12-05 00:56:29
【问题描述】:
我在 Python Pandas 中有数据框,如下所示,带有 str 值:
NR
--------
910517196
921122192
020612567
我尝试使用以下代码根据“NR”列中的值计算年龄:
ABT_DATE = pd.Timestamp(year=2021, month=6, day=30)
df['age'] = (ABT_DATE - pd.to_datetime(df.NR.str[:6], format = '%y%m%d')) / np.timedelta64(1, 'Y')
df["age"] = df.age.astype("int")
上述代码的逻辑是:从“NR”列中取df的前6个数字,并据此计算年龄,因为例如:910517196(前6个数字)是1991-05-17。
尽管如此,当我尝试使用我的代码时,出现如下错误:
ValueError: unconverted data remains: 20
我的 DataFrame 有超过 400k 行,因此很难检查所有行,但我确信我没有 NaN,并且年月日在正确的间隔内。
正如您在下面的示例中看到的那样,此代码是正确的并且应该可以工作,为什么它适用于小型示例代码并且不适用于我超过 400k 行的数据框?
df = pd.DataFrame({"NR" : ["95050611475", "00112575862"]})
df['age'] = (ABT_DATE - pd.to_datetime(df.NR.str[:6], format = '%y%m%d')) / np.timedelta64(1, 'Y')
df["age"] = df.age.astype("int")
df
如何修复我的大数据框以便能够在 Python Pandas 中使用我的代码?
【问题讨论】:
标签: python pandas datetime valueerror timedelta