Pandas 日期条件计算
Pandas Date Conditional Calculation
我正在尝试根据计算两个事件之间时间的条件语句在 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...但我没有取得多大成功。感谢您的帮助!
这样做:
group_df['Age'] = group_df.apply(lambda row:defect_age(row), axis=1)
这是因为您想将该函数应用于每一行,而不是一次应用于整个数据帧。
df['Status'] == 'R'
如果应用于数据框,将给出一个布尔值列表,而你不能在 if 表达式中放入一个布尔值列表
尝试使用 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'
这应该是一系列布尔值,而不是 if
需要的单个布尔值。你仍然想 运行 一次在整个系列中使用它。我希望我已经给了你一些有用的东西。
我正在尝试根据计算两个事件之间时间的条件语句在 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...但我没有取得多大成功。感谢您的帮助!
这样做:
group_df['Age'] = group_df.apply(lambda row:defect_age(row), axis=1)
这是因为您想将该函数应用于每一行,而不是一次应用于整个数据帧。
df['Status'] == 'R'
如果应用于数据框,将给出一个布尔值列表,而你不能在 if 表达式中放入一个布尔值列表
尝试使用 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'
这应该是一系列布尔值,而不是 if
需要的单个布尔值。你仍然想 运行 一次在整个系列中使用它。我希望我已经给了你一些有用的东西。