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 | 31 |
Tags
- swift
- 함수
- PyQt5
- python
- urllib
- port
- Linux
- GIT
- flutter
- MySQL
- 다이어트
- sqlite
- 유니티
- PyQt
- Excel
- mssql
- ubuntu
- ASP
- MS-SQL
- 날짜
- IOS
- 맛집
- 라즈베리파이
- tensorflow
- node.js
- pandas
- Unity
- javascript
- PER
- 리눅스
Archives
아미(아름다운미소)
pandas df a,b컬럼을 groupby 했을때c컬럼의합이 0인경우 d컬럼의 알파벳이 제일빠른행에 c행을 1로바꾸기 본문
랭귀지/pandas
pandas df a,b컬럼을 groupby 했을때c컬럼의합이 0인경우 d컬럼의 알파벳이 제일빠른행에 c행을 1로바꾸기
유키공 2024. 8. 14. 16:24import pandas as pd
# 예시 데이터프레임 생성
data = {
'a': ['A', 'A', 'B', 'B', 'C'],
'b': [1, 1, 2, 2, 1],
'c': [0, 0, 0, 0, 1],
'd': ['z', 'y', 'x', 'w', 'v']
}
df = pd.DataFrame(data)
# c의 합이 0인 그룹에서 d 컬럼의 알파벳이 가장 빠른 행의 c 값을 1로 변경
# 그룹화하여 c의 합 계산
grouped = df.groupby(['a', 'b'])
# c의 합이 0인 그룹 찾기
mask = grouped['c'].transform('sum') == 0
# 해당 그룹에서 d 컬럼 기준으로 정렬 후 첫 번째 행의 인덱스 찾기
first_alpha_index = df[mask].sort_values(by='d').groupby(['a', 'b']).head(1).index
# c 값을 1로 변경
df.loc[first_alpha_index, 'c'] = 1
print(df)
import pandas as pd
# 예시 데이터프레임 생성
data = {
'a': ['A', 'A', 'B', 'B', 'C'],
'b': [1, 1, 2, 2, 1],
'c': [0, 0, 0, 0, 1],
'd': ['z', 'y', 'x', 'w', 'v']
}
df = pd.DataFrame(data)
# 그룹화하여 c의 합이 0인 그룹 찾기
grouped = df.groupby(['a', 'b'])
for name, group in grouped:
if group['c'].sum() == 0:
# 그룹을 d 컬럼 기준으로 정렬
sorted_group = group.sort_values(by='d')
# 알파벳이 가장 빠른 행의 인덱스 찾기
min_alpha_index = sorted_group.index[0]
# 해당 행의 c 값을 1로 변경
df.at[min_alpha_index, 'c'] = 1
print(df)
'랭귀지 > pandas' 카테고리의 다른 글
df a,b컬럼에을 groupby했을때 c가 모두 false일때 해당그룹의 d 알파벳이 가장빠른행에 c값을 true로 바꿔준다 (0) | 2024.08.16 |
---|---|
pandas null 체크 (0) | 2024.08.15 |
값채우기 응용 (0) | 2024.08.13 |
pandas 몫 나머지 (0) | 2024.08.13 |
b컬럼이 음수면 -1을 해당수만큼넣고 양수면 1을 해당수만큼 넣기 (0) | 2024.08.12 |
Comments