팬더에 다음 데이터 프레임이 있습니다.
Name|Date|Value
"Bob"|2015-07-08|1
"Bob"|2015-08-10|2
"Bob"|2015-09-14|3
"Sam"|2015-10-02|1
"Sam"|2015-11-08|2
그리고 다음 행의 간단한 변환 인 각 행 앞에 행을 계산하고 싶습니다 ( "Date"(datetime 객체)에서 1 일을 빼고 "Value"를 1로 줄임). 이렇게 :
Name|Date|Value
"Bob"|2015-07-07|0
"Bob"|2015-07-08|1
"Bob"|2015-08-09|1
"Bob"|2015-08-10|2
"Bob"|2015-09-13|2
"Bob"|2015-09-14|3
"Sam"|2015-10-01|0
"Sam"|2015-10-02|1
"Sam"|2015-11-07|1
"Sam"|2015-11-08|2
이것을 어떻게 달성 할 수 있습니까?
나는 당신의 작업을의 사본에 적용 DataFrame
하고 다음과 같이 다시 스택합니다.
In [54]: df2 = df.copy()
In [55]: df2['Date'] = df2['Date'] - pd.Timedelta(1, 'd')
...: df['Value'] = df['Value'] - 1
...:
In [60]: pd.concat([df, df2], keys=[0,1]).swaplevel(0,1).sort_index()
Out[60]:
Name Date Value
0 0 Bob 2015-07-08 0
1 Bob 2015-07-07 1
1 0 Bob 2015-08-10 1
1 Bob 2015-08-09 2
2 0 Bob 2015-09-14 2
1 Bob 2015-09-13 3
3 0 Sam 2015-10-02 0
1 Sam 2015-10-01 1
4 0 Sam 2015-11-08 1
1 Sam 2015-11-07 2
keys
및 swaplevel
부분은 반드시 필요한 것은 아니지만, 그것은 가진 방지 Index
와 작업에 종종 쉽게 중복과 함께합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다