【发布时间】:2017-05-16 15:24:16
【问题描述】:
我想将一个数据框列中的日期增加另一列中的整数值。
我收到 TypeError: timedelta days 组件不支持的类型:numpy.int64
我的数据框如下所示:
import pandas as pd
import numpy as np
import datetime as dt
dfa = pd.DataFrame([
['5/15/17',1],
['5/15/17',1]],
columns = ['Start','Days'])
dfb = pd.DataFrame([
['5/15/17',1],
['5/15/17',1]],
columns = ['Start','Days'])
我使用以下代码将“开始”列格式化为日期时间:
dfa['Start'] = dfa['Start'].apply(lambda x:
dt.datetime.strptime(x,'%m/%d/%y'))
dfb['Start'] = dfb['Start'].apply(lambda x:
dt.datetime.strptime(x,'%m/%d/%y'))
我尝试更改 dfa 数据框中的值。 dfb 数据框参考适用于“Days”,但不适用于“Start”:
for i, row in dfb.iterrows():
for j, row in dfa.iterrows():
new = pd.DataFrame({"Start": dfa.loc[j,"Start"] + datetime.timedelta(days=dfb.loc[i,"Days"]), "Days": dfa.loc[j,"Days"] - dfb.loc[i,"Days"]}, index = [j+1])
dfa = pd.concat([dfa.ix[:j], new, dfa.ix[j+1:]]).reset_index(drop=True)
这是引发错误的关键组件:
“开始”:dfa.loc[j,"Start"] + datetime.timedelta(days=dfb.loc[i,"Days"]
如果我使用它可以正常工作:
“开始”:dfa.loc[j,“开始”] + datetime.timedelta(days=1)
但我需要它从 dfb 中获取该值,而不是静态整数。
【问题讨论】: