首页 > 解决方案 > 如何使用一列的值作为字符串的一部分来填充另一列中的 NaN?

问题描述

假设我有以下df:

   year  date_until
1  2010  -
2  2011  30.06.13
3  2011  NaN
4  2015  30.06.18
5  2020  -

我想用 30/06/{year +1} 填写列中的所有-NaNs 。date_until我尝试了以下方法,但它使用全年列而不是特定行的相应值:

df['date_until] = df['date_until].str.replace('-', f'30/06/{df["year"]+1}')

我的最终目标是计算 date_until 的年份和年份之间的差异,所以也许上面的步骤甚至是不必要的。

标签: pandasreplacefillna

解决方案


我们可以pd.to_datetime在这里使用 witherrors='coerce'来忽略错误的日期。然后使用dt.year来计算差异:

df['date_until'] = pd.to_datetime(df['date_until'], format='%d.%m.%y', errors='coerce')
df['diff_year'] = df['date_until'].dt.year - df['year']
   year date_until  diff_year
0  2010        NaT        NaN
1  2011 2013-06-30        2.0
2  2011        NaT        NaN
3  2015 2018-06-30        3.0
4  2020        NaT        NaN

推荐阅读