我的数据框有两列:Date_created和Date_closed。如果Date_closed为NaN,则表示案件仍未结案。
我想引入一个名为Days_to_close的新列,它表示Date_closed和Date_created之间的天数差。
运行以下代码后:
DF['Days_to_close']=DF['Date_Closed']-DF['Date_Created']
Pandas为所有已关闭的情况返回Days_to_close,留下打开的情况NaN,因为Date_Closed是NaN。
然后我想用今天的日期减去Date_Created来填充那些打开的案例的Days_to_close,所以我写了下面的代码:
today = datetime.date.today()
DF['Days_to_close'].fillna(today- DF['Date_Created'])
然而,我得到以下错误信息:unsupported operand type(s) for -: 'DatetimeArray' and 'datetime.date'
我还尝试通过
为今天创建一个数据框架today = datetime.date.today()
todaydf = pd.Dataframe({today})
错误信息变为:cannot subtract DatetimeArray from ndarray
我该如何克服这个问题?我是否需要通过循环检查每个NaN记录&If语句并分别填写?由于
我建议您先填写NaN值,然后计算之后的差异(确保日期列被解析为datetime)。
我假设你正在从csv中读取,在我的日期解析示例中,它可以是你使用的任何格式。
import pandas as pd
df = pd.read_csv("filepath", parse_dates=['Date_Created', 'Date_Closed'])
df['Date_Closed'].fillna(pd.to_datetime("today"), inplace=True)
#df['Date_Closed'] = df['Date_Closed'].fillna(pd.to_datetime("today"), inplace=True)
df['Days_to_close'] = df['Date_Closed']- df['Date_Created']
希望对你有帮助。