python - Pandas 日期条件计算

标签 python datetime pandas conditional-statements

我正在尝试根据计算两个事件之间时间的条件语句在 Pandas 中创建一个列。我能够计算出日期,但是当插入我的条件语句时:

def defect_age(df):
    if df['Status'] == 'R':
        return (pd.to_datetime(df['resolved_on'], errors='coerce') 
            - pd.to_datetime(df['submitted_on'])) / np.timedelta64(1, 'D')
    else:
        return 'null'

然后稍后由列调用:

group_df['Age'] = group_df.apply(defect_age(group_df), axis=0)

我收到以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我试图将我的问题建立在所提出的问题HERE的基础上...但我并没有取得多大成功。如有任何帮助,我们将不胜感激!

最佳答案

尝试使用 defect_age 的定义

def defect_age(df):
    resolved = pd.to_datetime(df.resolved_on, errors='coerce')
    submitted = pd.to_datetime(df.submitted_on)
    r = (resolved - submitted) / np.timedelta64(1, 'D')
    return np.where(df.Status == 'R', r, np.nan)

错误来自if df['Status'] == 'R'

这将是一系列 bool 值,而不是 if 需要的单个 bool 值。您仍然想一次在整个系列中运行它。我希望我已经给了你一些有用的东西。

关于python - Pandas 日期条件计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753047/

相关文章:

java - 在 Java 中将本地时间转换为 UTC

python - 两列上最近的匹配合并(pandas)

python - 使用 cPickle 仅返回文件中的第一个条目

Django model_to_dict 在转换模型时跳过所有 DateTimeField

python - 如何依次播放视频的多个片段

python - 转换 DD/MM/YYYY HH :MM:SS into MySQL TIMESTAMP

Python Pandas 子集十六进制字符串,转换为十进制

python - 在更新 pandas 中的另一列时合并行

c++ - 从 C++ 调用 Cython 函数

python - 如何根据用户权限加载admin.py中的类