python - 如何在 Pandas 中对日期时间列使用条件逻辑?

标签 python pandas date dataframe datetime

我有两个日期时间列 - ColumnA 和 ColumnB。我想使用条件逻辑创建一个新列 - ColumnC。

最初,我从 YearMonth 日期列(例如 201907、201908 等)创建了 ColumnB。

当ColumnA为NaN时,我想选择ColumnB。 否则,我想选择 ColumnA。

目前,我下面的代码导致 ColumnC 具有不同的格式。我不知道如何摆脱所有这些 0。我希望整个列都是 YYYY-MM-DD。

    ID  YearMonth  ColumnA      ColumnB     ColumnC
0   1   201712     2017-12-29   2017-12-31  2017-12-29
1   1   201801     2018-01-31   2018-01-31  2018-01-31
2   1   201802     2018-02-28   2018-02-28  2018-02-28
3   1   201806     2018-06-29   2018-06-30  2018-06-29
4   1   201807     2018-07-31   2018-07-31  2018-07-31
5   1   201808     2018-08-31   2018-08-31  2018-08-31
6   1   201809     2018-09-28   2018-09-30  2018-09-28
7   1   201810     2018-10-31   2018-10-31  2018-10-31
8   1   201811     2018-11-30   2018-11-30  2018-11-30
9   1   201812     2018-12-31   2018-12-31  2018-12-31
10  1   201803     NaN          2018-03-31  1522454400000000000
11  1   201804     NaN          2018-04-30  1525046400000000000
12  1   201805     NaN          2018-05-31  1527724800000000000
13  1   201901     NaN          2019-01-31  1548892800000000000
14  1   201902     NaN          2019-02-28  1551312000000000000
15  1   201903     NaN          2019-03-31  1553990400000000000
16  1   201904     NaN          2019-04-30  1556582400000000000
17  1   201905     NaN          2019-05-31  1559260800000000000
18  1   201906     NaN          2019-06-30  1561852800000000000
19  1   201907     NaN          2019-07-31  1564531200000000000
20  1   201908     NaN          2019-08-31  1567209600000000000
21  1   201909     NaN          2019-09-30  1569801600000000000
df['ColumnB'] = pd.to_datetime(df['YearMonth'], format='%Y%m', errors='coerce').dropna() + pd.offsets.MonthEnd(0) 

df['ColumnC'] = np.where(pd.isna(df['ColumnA']), pd.to_datetime(df['ColumnB'], format='%Y%m%d'), df['ColumnA'])

最佳答案

df['ColumnS'] = np.where(df['ColumnA'].isnull(),df['Column'] , df['ColumnA'])

关于python - 如何在 Pandas 中对日期时间列使用条件逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836061/

相关文章:

python - 为什么 Pandas 在一种情况下会导致 'ZeroDivisionError' 而在另一种情况下不会?

javascript - 如何增加/减少 HTML5 日期选择器值?

python - 将 PySpark 数据框重新采样从几个月到几周

Java:在 Calendar 对象中设置日期时,我可以使用日/月/年引用吗?

c++ - 在 C++ 中将序列日期 (Excel) 转换为年月日的算法

python - 尝试一下,但不能在 Python 中工作

用于 GPU/并行光线追踪的 Python(或不是……)框架?

python - Telethon 无法通过两步验证登录帐户

python - 使用 Pandas 读取带有时间戳列的 csv

python - 如何在不使用 One Hot 编码的情况下将行数据转换为列