Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ubuntu
- flutter
- ASP
- MS-SQL
- mssql
- node.js
- urllib
- 다이어트
- javascript
- Unity
- 날짜
- PER
- IOS
- GIT
- 리눅스
- tensorflow
- 함수
- Linux
- 유니티
- MySQL
- swift
- port
- 맛집
- 라즈베리파이
- PyQt
- python
- sqlite
- Excel
- pandas
- PyQt5
Archives
아미(아름다운미소)
pandas sum,count,몫,나머지 구하기 본문
import pandas as pd
# 예시 데이터프레임 생성
data = {
'a': ['x', 'x', 'y', 'y', 'x', 'y', 'x', 'y', 'x', 'y'],
'b': [1, 1, 2, 2, 1, 1, 2, 2, 1, 1],
'c': ['foo', 'foo', 'bar', 'bar', 'foo', 'foo', 'bar', 'bar', 'foo', 'foo'],
'd': [10, 10, 20, 20, 10, 10, 20, 20, 10, 10],
'e': [4, 6, 10, 15, 25, 5, 3, 8, 12, 7],
'f': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
}
df = pd.DataFrame(data)
# 그룹화 후 e 컬럼의 합계와 행 수 계산
result = df.groupby(['a', 'b', 'c', 'd']).agg(
total_sum=('e', 'sum'),
row_count=('e', 'count')
).reset_index()
# 컬럼 이름 변경
result.rename(columns={'total_sum': 'total sum', 'row_count': 'row count'}, inplace=True)
# 몫과 나머지 계산
result['quotient'], result['remainder'] = divmod(result['total sum'], result['row count'])
# df와 result를 left outer join
merged_df = pd.merge(df, result, on=['a', 'b', 'c', 'd'], how='left')
merged_df['remainder_add'] = 0
# 각 그룹별로 d 컬럼 채우기
for name, group in merged_df.groupby(['a', 'b', 'c', 'd']):
if not group.empty: # 그룹이 비어있지 않은지 체크
count = group['remainder'].iloc[0] # 첫 번째 행의 c 값을 가져옴
fill_count = min(count, len(group)) # c 값과 그룹 길이 중 작은 값
merged_df.loc[group.index[:fill_count], 'remainder_add'] = 1 # c가 양수일 경우 1로 채움
merged_df['remainder_sum'] = merged_df['quotient'] + merged_df['remainder_add']
print(merged_df)
'랭귀지 > pandas' 카테고리의 다른 글
df 의 a컬럼값과 df2의 a,b,c,d groupby sum e의 값이 같은지 검증하는방법 (0) | 2024.08.26 |
---|---|
pandas a,b 값의 나눈값과 나머지를 구하고 나눈값이 음수이면 나머지를 음수로 양수면 나머지를 양수 (0) | 2024.08.23 |
Pandas를 사용하여 `groupby`로 `a`, `b`, `c`, `d` 컬럼을 기준으로 그룹화한 후, `d` 컬럼이 모두 null이면 1/해당row수를 소수점5자리에서 반올림하기 (0) | 2024.08.22 |
문자열 `'TRUE'`인 경우 `b` 값을 `c` 컬럼에 복사 (0) | 2024.08.20 |
Pandas df 에서 a컬럼을 distinct 했을때 b컬럼이 true인 c값을 copy해서 b칼럼에 넣어주는예제 (0) | 2024.08.16 |
Comments