1
我想在另一個數據幀列中增加一個整數值的日期。在pandas數據框中添加其他數據幀的日期
我收到類型錯誤:爲timedelta天組件不支持的類型:numpy.int64
我dataframes是這樣的:
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數據框參考作品「天」,但不是「開始」:
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,「開始」 ] + datetime.timedelta(天= dfb.loc [我, 「天」]
它正常工作,如果我使用:
「開始」:dfa.loc [J, 「開始」] +的日期時間。 timedelta(天= 1)
但我需要它採取臨時來自dfb的t值,不是一個靜態整數。
這似乎像它應該工作,它與您的代碼的做法,但當我將它作爲dfb.loc [i,'Days'] apply(pd.Timedelta,unit ='D')放入我的實際代碼中時,它引發:AttributeError:'numpy.int64'對象沒有屬性'apply' 。 – swysell
哦,但如果我刪除「.loc [我,」它確實有效。我假設我需要保留那個索引的參考,但也許情況並非如此? – swysell
關於熊貓的一件很酷的事情是,它本質上是做索引對齊的事情。如果dfa和dfb看起來相似,那麼它將對齊索引。如果dfa和dfb處於不同的排序順序,您也可以在兩者上使用set_index('Date')來獲得對齊。 –