>  기사  >  백엔드 개발  >  팬더와 조건부 병합

팬더와 조건부 병합

WBOY
WBOY앞으로
2024-02-22 13:07:091208검색

팬더와 조건부 병합

질문 내용

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

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으로 문의하시기 바랍니다. 삭제