pandas 如何使用一列的值作为字符串的一部分来填充另一列中的NaN?

qhhrdooz  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(207)

假设我有以下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}填充date_until列中的所有-NaN。我尝试了以下方法,但它使用了整个year列,而不是特定行的相应值:

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

我的最终目标是计算年份和date_until的年份之间的差,因此上面的步骤可能甚至是不必要的。

bttbmeg0

bttbmeg01#

我们可以在这里使用pd.to_datetimeerrors='coerce'来忽略错误的日期,然后使用dt.year来计算差值:
第一个

7nbnzgx9

7nbnzgx92#

对于那些试图取代价值观的人,就像我一开始想做的那样,下面是你可以解决这个问题的方法:

for i in range(len(df)):
    if pd.isna(df['date_until'].iloc[i]):
        df['date_until'].iloc[i] = f'30.06.{df["year"].iloc[i] +1}'
    if df['date_until'].iloc[i] == '-':
        df['date_until'].iloc[i] = f'30.06.{df["year"].iloc[i] +1}

但@二凡的做法干净多了

相关问题