【问题标题】:How to subtract dates and accounting for null values?如何减去日期并计算空值?
【发布时间】:2020-05-07 10:19:57
【问题描述】:

我有一列以 hh:mm:ss 格式计算从 A 到 B 所需的秒数。但是,A 和 B 可能会在数据中显示空值。

假设 A=05:15:00 和 B=naT,那么减法将返回 5:15 秒,由于 B 是无穷大,这在上下文中会产生误导和错误!如果 both 列不为空,我如何指定仅从 A 中减去 B 列?

这是我的代码:

df['A_to_B']=(df.B-df.A).dt.total_seconds()

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    Python 不使用 null,但它确实使用了一种名为 None 的类型来表示值/类型的缺失。所以你会检查 df.B 和 df.A 是否都不是 None,可能是这样的:

    if (df.A is not None) and (df.B is not None):
        df['A_to_B'] = (df.B-df.A).dt.total_seconds()
    

    【讨论】:

    • 也许是 Python,但 pandas 确实有 NaN
    【解决方案2】:

    你可以这样做:

    df['A_to_B'] = np.where(df['A'].notna() & df['B'].notna(), 
                            (df['A'] - df['B']).dt.total_seconds(),
                            np.nan)
    

    样本数据

             A        B
    0 05:15:00      NaT
    1      NaT 00:00:15
    2 05:15:00 00:15:00
    

    输出:

             A        B   A_to_B
    0 05:15:00      NaT      NaN
    1      NaT 00:00:15      NaN
    2 05:15:00 00:15:00  18000.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多