pandas - 如何使用一列的值作为字符串的一部分来填充另一列中的 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} 填写列中的所有-
和NaN
s 。date_until
我尝试了以下方法,但它使用全年列而不是特定行的相应值:
df['date_until] = df['date_until].str.replace('-', f'30/06/{df["year"]+1}')
我的最终目标是计算 date_until 的年份和年份之间的差异,所以也许上面的步骤甚至是不必要的。
解决方案
我们可以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
推荐阅读
- react-native - 将令牌传递给本机反应中的授权标头
- scala - 我在 playframework 中遇到“CreationException:无法创建注入器”的错误:
- google-apps-script - 如果单元格为空,请向下读取范围并复制公式
- git - 将 GitHub 存储库移至组织,但有特定要求
- java - 无法编写 jooq 查询
- javascript - 如何在文本之前添加元素 div(如何在元素中附加文本)
- angular - 未收到Angular 8 Click事件
- .net-core - XUnit 测试仅适用于命令行而非 VSCode GUI
- c# - 使用 ActivateItem 的 WPF Caliburn 微内存问题
- flutter - 如何在 Flutter 中创建文本剪切?