0
나는 가장 오래된 것부터 시작하여 날짜별로 테이블을 정렬해야한다는 요구 사항이 있습니다. 총 필드는 name
및 kind
개의 필드를 그룹화하고 합계를 적용하여 만듭니다. 이제 각 행에 대해 동일한 name-kind
그룹화에서 남은 시간을 계산해야합니다.팬더 : 그룹화의 남은 시간 계산
csv로는 다음과 같습니다
date name kind duration total remaining
1-1-2017 a 1 10 100 ? should be 90
2-1-2017 b 1 5 35 ? should be 30
3-1-2017 a 2 3 50 ? should be 47
4-1-2017 b 2 1 25 ? should be 24
5-1-2017 a 1 8 100 ? should be 82
6-1-2017 b 1 2 35 ? should be 33
7-1-2017 a 2 3 50 ? should be 44
8-1-2017 b 2 6 25 ? should be 18
...
내 질문 name
및 kind
별로 그룹화 DataFrame
을하면서 내가 나머지 값을 계산합니까 어떻게? 다음
df['temp'] = df.groupby(['name', 'kind'])['duration'].apply(lambda x: x.shift() + x)
과 : 내 초기 접근 방식
열을 이동과 같은 서로 시간의 값을 추가하는 것이 었습니다
df['duration'] = df.apply(lambda x: x['total'] - x['temp'], axis=1)
을하지만 예상대로 작동하지 않았다.
깨끗한 방법이 있습니까? 아니면 iloc, ix, loc
을 사용하면 어떻게 될까요?
감사합니다.
df["cumsum"] = df.groupby(['name', 'kind'])["duration"].cumsum()
df["remaining"] = df["total"] - df["cumsum"]
어쩌면 인덱스를 재설정주의 것 :
완벽하게 작동했습니다. 감사합니다. –