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
													
											
												
												- 날짜
- 함수
- 라즈베리파이
- GIT
- PyQt5
- swift
- mssql
- 다이어트
- IOS
- Unity
- pandas
- ASP
- flutter
- Excel
- port
- 리눅스
- node.js
- sqlite
- PER
- ubuntu
- PyQt
- urllib
- MS-SQL
- 유니티
- Linux
- tensorflow
- MySQL
- 맛집
- javascript
- python
													Archives
													
											
											
											
											아미(아름다운미소)
값채우기 응용 본문
import pandas as pd
import numpy as np
# 샘플 데이터 생성
data = {
    'a': ['A'] * 6 + ['B'] * 6 + ['C'] * 6,
    'b': [202411, 202412, 202413, 202414, 202415, 202416,
          202411, 202412, 202413, 202414, 202415, 202416,
          202428, 202429, 202431, 202432, 202433, 202434],
    'c': [3] * 18
}
# DataFrame 생성
df = pd.DataFrame(data)
# b 컬럼으로 정렬
df.sort_values(by='b', inplace=True)
# d 컬럼 생성
def assign_values(group):
    count = group['c'].iloc[0]
    d_values = [1] * count + [np.nan] * (len(group) - count)
    return pd.Series(d_values, index=group.index)
# 그룹별로 d 컬럼 할당 (여기서 'a'와 'b'를 그룹화)
d_series = df.groupby(['a', 'b'], group_keys=False).apply(assign_values)
df['d'] = d_series
# 결과를 b의 적은 값 순으로 정렬
df.sort_values(by=['a', 'b'], inplace=True)
# 인덱스 초기화
df.reset_index(drop=True, inplace=True)
# 결과 출력
print(df[['a', 'b', 'c', 'd']])예제
import pandas as pd
import numpy as np
# 샘플 데이터 생성
data = {
    'a': ['A'] * 6 + ['B'] * 6 + ['C'] * 6,
    'b': [202411, 202412, 202413, 202414, 202415, 202416,
          202411, 202412, 202413, 202414, 202415, 202416,
          202428, 202429, 202431, 202432, 202433, 202434],
    'c': [3] * 18
}
# DataFrame 생성
df = pd.DataFrame(data)
# b 컬럼으로 정렬
df.sort_values(by='b', inplace=True)
# d 컬럼 생성
def assign_values(group):
    count = group['c'].iloc[0]
    d_values = [1] * count + [np.nan] * (len(group) - count)
    return pd.Series(d_values, index=group.index)
# 그룹별로 d 컬럼 할당
d_series = df.groupby('a', group_keys=False).apply(assign_values)
df['d'] = d_series
# 결과를 b의 적은 값 순으로 정렬
df.sort_values(by=['a', 'b'], inplace=True)
# 인덱스 초기화
df.reset_index(drop=True, inplace=True)
# 결과 출력
print(df[['a', 'b', 'c', 'd']])'랭귀지 > pandas' 카테고리의 다른 글
| pandas null 체크 (0) | 2024.08.15 | 
|---|---|
| pandas df a,b컬럼을 groupby 했을때c컬럼의합이 0인경우 d컬럼의 알파벳이 제일빠른행에 c행을 1로바꾸기 (0) | 2024.08.14 | 
| pandas 몫 나머지 (0) | 2024.08.13 | 
| b컬럼이 음수면 -1을 해당수만큼넣고 양수면 1을 해당수만큼 넣기 (0) | 2024.08.12 | 
| pandas df와 df를 groupby sum한 a컬럼을 outer join하면 결과는? (0) | 2024.08.12 | 
			  Comments