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 dataframe의 참고 문헌 :
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']로 적용하면 (pd.Timedelta, unit = 'D') 적용됩니다. AttributeError : 'numpy.int64' . – swysell
아,하지만 ".loc [i,"를 제거하면 작동합니다. 나는 내가 어느 색인에 대한 참조를 유지할 필요가 있다고 가정하고 있었지만 어쩌면 그렇지 않은 것일까? – swysell
팬더에 대한 멋진 점 중 하나는 인덱스 정렬을 통해 본질적으로 일을한다는 점입니다. dfa와 dfb가 비슷하게 보이면 인덱스에 정렬됩니다. 또한 dfa와 dfb가 서로 다른 정렬 순서에 있다면 정렬 정렬을 얻기 위해 set_index ('Date')를 둘 다 사용할 수 있습니다. –