> 백엔드 개발 > 파이썬 튜토리얼 > 팬더와 조건부 병합

팬더와 조건부 병합

WBOY
풀어 주다: 2024-02-22 13:07:09
앞으로
1228명이 탐색했습니다.

팬더와 조건부 병합

질문 내용

지역에 대한 다른 호출을 자세히 설명하는 아래와 같은 팬더 데이터 프레임이 있습니다.

commsdate 지역 day0 증분 day1 증분 day2 증분
01/01/24 판매 43 36 29
01/01/24 서비스 85 74 66
02/01/24 판매 56 42 31
02/01/24 서비스 73 62 49
03/01/24 판매 48 32 24
03/01/24 서비스 67 58 46

날짜별로 접수된 콜수를 계산하려고 하니 1월 1일에 접수된 판매 콜은 해당 날짜의 day0_incremental(43)이 되고, 1월 2일은 1월 2일의 day0에 1월 1일의 day1(36+) 56)이 됩니다. 1월 3일은 1월 3일의 day0에 1월 2일의 day1을 더한 값(48+42+29)이 되어 다음 데이터 프레임이 됩니다.

통화날짜 판매 서비스
01/01/24 43 85
02/01/24 92 147
03/01/24 119 195
04/01/24 63 107
05/01/24 24 46

영역 열 아래에 값이 없는 두 번째 테이블에 대한 데이터 프레임의 셸을 성공적으로 생성했지만 다음에 무엇을 해야 할지 모르겠습니다:

으아악

for 루프를 작성하기 시작했지만 여기까지만 진행했습니다.

df['commsdate'] = pd.to_datetime(df['commsdate'], format='%d/%m/%y')
areaunique = df['area'].unique().tolist()
from datetime import timedelta
calldate = pd.date_range(start=min(df['commsdate']), end=max(df['commsdate'])+timedelta(days=6), freq='d')

data = {area: [] for area in areaunique}

dfnew = pd.dataframe(data)

dfnew['calldate'] = calldate

dfnew = dfnew.melt(id_vars=['calldate'], var_name='area')

dfnew = dfnew.pivot(index='calldate', columns='area', values='value')

dfnew = dfnew.reset_index()

dfnew = dfnew[['calldate'] + areaunique]
로그인 후 복사

정답


전화pivotshiftadd 가능합니다:

으아악

또는 dayx … 字符串中提取的数字以编程方式使用 functools.reduce에서 사용:

으아악

출력:

으아악

위 내용은 팬더와 조건부 병합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿