일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ubuntu
- ASP
- mssql
- swift
- Unity
- urllib
- flutter
- Linux
- GIT
- pandas
- PyQt
- python
- 라즈베리파이
- 유니티
- sqlite
- node.js
- MS-SQL
- tensorflow
- IOS
- 날짜
- port
- 맛집
- javascript
- 리눅스
- PyQt5
- PER
- 함수
- MySQL
- 다이어트
- Excel
목록랭귀지/pandas (128)
아미(아름다운미소)
import pandas as pd# 예시 데이터프레임 생성 (실제 사용시에는 주석 처리)data = { 'a': [1, 1, 1, 2, 2, 2], 'b': ['x', 'x', 'y', 'y', 'y', 'y'], 'c': [10, 10, 20, 20, 20, 30], 'd': [100, 100, 200, 300, 300, 400]}df = pd.DataFrame(data)# 그룹별로 d 컬럼의 최빈값 계산 (동률일 경우 최소값 선택)result = df.groupby(['a', 'b', 'c'])['d'].agg( lambda x: x.mode().min() if not x.mode().empty else None).reset_index()print(result)
import pandas as pd# 예제 데이터 생성df1 = pd.DataFrame({ 'a': [1, 2, 3], 'b': ['x', 'y', 'z'], 'c': [0.1, 0.2, 0.3]})df2 = pd.DataFrame({ 'd': [10, 20]})# 크로스 조인 수행 (방법 1)cross_join = df1.assign(key=1).merge(df2.assign(key=1), on='key').drop('key', axis=1)# 크로스 조인 수행 (방법 2 - pandas 1.2.0+)cross_join = df1.merge(df2, how='cross')print(cross_join)
**✅ 기능**: 주어진 데이터프레임에서 지정한 그룹 컬럼 기준으로, **유효한 값이 있는 가장 최신 주차의 데이터**로 결측값을 채웁니다. **🛡️ 안전성**: 최신 주차 값이 `NaN`이어도 그 다음 최신 유효값을 자동으로 찾아 처리합니다.import pandas as pdimport numpy as np# ------------------------------# 1. 예제 데이터 생성# ------------------------------df = pd.DataFrame({ 'a': ['x', 'x', 'x', 'x', 'y', 'y'], # 그룹 컬럼 1 'b': ['u', 'u', 'u', 'u', 'v', 'v'], # 그룹 컬럼 2 'c': ['p', 'p', 'p',..
def process_dataframe_optimized(dict_df_types, df): type_handlers = { 'int': lambda s: pd.to_numeric(s, errors='coerce').fillna(0).astype('int32'), 'float': lambda s: pd.to_numeric(s, errors='coerce').fillna(0).astype('float32'), 'bool': lambda s: s.astype(str).str.lower().isin(['true', 't', '1']), 'datetime': lambda s: pd.to_datetime(s, errors='coerce'), 's..
df1 = df.groupby(by=['a'], as_index=False).max() # 또는 다른 집계 함수df['a'] = np.nan if df1['a'].isnull().any() else df1['a'].max()# 컬럼 'a'가 있고, NaN이 아닌 값이 하나라도 있으면 최대값, 아니면 np.nandf['a'] = df1['a'].max() if 'a' in df1.columns and df1['a'].notna().any() else np.nan🎯 EX)import pandas as pdimport numpy as np# 예제 1: 'a' 컬럼이 있고, NaN이 아닌 값이 존재하는 경우df1 = pd.DataFrame({'a': [3, 7, np.nan]})df = pd.DataFram..
시작# ❌ 잘못된 원래 코드 (에러 발생)df['a'] = df1['a'].agg(lambda x: np.nan if x.isnull.any() else x.max()).reset_index(drop=True)# "전체에 null이 하나라도 있으면 np.nan, 아니면 최대값"# ✅ 올바르고 간결한 코드df['a'] = np.nan if df1['a'].isnull().any() else df1['a'].max()# 결론: 맞습니다! 이게 가장 pandas다운 깔끔한 코드입니다.# 복잡한 agg() 체이닝 대신 조건부 표현식 + 자동 브로드캐스팅을 활용한 완벽한 해결책🎯 결론 : 최종선택if 'a' in df1.columns: # NaN이 아닌 값이 하나라도 있으면 최대값, 아니면 np.nan ..
df['a'] = df1['a'].agg(lambda x: np.nan if x.isnull.any() else x.max()).reset_index(drop=True)Colums must be same length as key 에러원래 코드 `df['a'] = df1['a'].agg(...)`에서 발생한 에러는 `agg()`가 단일 값을 반환하기 때문에 `df['a']`의 길이와 맞지 않아서 발생한 문제수정import pandas as pdimport numpy as np# 1. 예제 데이터 생성df = pd.DataFrame({'other_col': [10, 20, 30]}) # 타겟 DataFrame (3행)df1 = pd.DataFrame({'a': [1, np.nan, 3]}) # 소..
import pandas as pddef add_blank_category_or_fillna(series): try: if pd.api.types.is_categorical_dtype(series): # ''가 이미 포함되어 있는지 확인 if '' not in series.cat.categories: return series.cat.add_categories(['']) else: return series else: return series.fillna('') except Exception as e: print(f"예외 발생: ..
import duckdb# DuckDB DB 파일에 연결 (없으면 생성됨)con = duckdb.connect("mydata.duckdb")# CSV 파일 읽어서 테이블로 저장con.execute("""CREATE TABLE my_table ASSELECT * FROM read_csv_auto('sample.csv')""")import pandas as pdimport duckdbdf = pd.read_csv("sample.csv")# DuckDB에 저장con = duckdb.connect("mydata.duckdb")con.register("df_view", df)# DataFrame을 테이블로 저장con.execute("CREATE TABLE my_table AS SELECT * FROM df_vie..