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
- Excel
- PyQt
- GIT
- javascript
- PyQt5
- 리눅스
- 맛집
- urllib
- port
- Unity
- flutter
- 다이어트
- 날짜
- MS-SQL
- mssql
- tensorflow
- PER
- MySQL
- 라즈베리파이
- ASP
- python
- swift
- pandas
- IOS
- sqlite
- Linux
- node.js
- 유니티
Archives
아미(아름다운미소)
데이터프레임의 컬럼명과 타입이 일치하는지 체크하고, 불일치할 경우 틀린 컬럼명과 타입을 출력 본문
import pandas as pd
# 예시 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
df3 = pd.DataFrame({'A': [9, 10], 'C': [11, 12]}) # 컬럼명이 다름
df4 = pd.DataFrame({'A': [13, 14], 'B': [15, 16]})
df5 = pd.DataFrame({'A': [17, 18], 'B': [19, 20]})
df6 = pd.DataFrame({'A': [21, 22], 'B': [23.0, 24.0]}) # 타입이 다름
df7 = pd.DataFrame({'A': [25, 26], 'B': [27, 28]})
# 데이터프레임 리스트
dataframes = [df1, df2, df3, df4, df5, df6, df7]
# 기준 데이터프레임의 컬럼명과 타입
base_columns = {col: df1[col].dtype for col in df1.columns}
# 불일치 체크
any_unmatched = False
for i, df in enumerate(dataframes):
for col in base_columns.keys():
if col not in df.columns:
print(f"DataFrame {i+1}: '{col}' 컬럼이 없습니다.")
any_unmatched = True
elif df[col].dtype != base_columns[col]:
print(f"DataFrame {i+1}: '{col}'의 타입이 {df[col].dtype}로 불일치합니다. (기준: {base_columns[col]})")
print(f"틀린 데이터: {df[col].tolist()}")
any_unmatched = True
# 불일치가 없을 때 concat
if not any_unmatched:
combined_df = pd.concat(dataframes, axis=0, ignore_index=True)
print("모든 데이터프레임이 일치합니다. 결합 완료:")
print(combined_df)
else:
print("불일치가 발견되어 결합할 수 없습니다.")
import pandas as pd
# 예시 데이터프레임 생성
df1 = pd.DataFrame({'A': range(1000), 'B': range(1000)})
df2 = pd.DataFrame({'A': range(1000, 2000), 'B': range(1000, 2000)})
df3 = pd.DataFrame({'A': range(2000, 3000), 'C': range(1000)}) # 컬럼명이 다름
df4 = pd.DataFrame({'A': range(3000, 4000), 'B': range(3000, 4000)})
df5 = pd.DataFrame({'A': range(4000, 5000), 'B': [x + 0.5 for x in range(1000)]}) # 길이를 맞춤
# 리스트에 데이터프레임 추가
dataframes = [df1, df2, df3, df4, df5]
# 기준 데이터프레임의 컬럼명과 타입
base_columns = {col: df1[col].dtype for col in df1.columns}
# 불일치 체크
any_unmatched = False
for i, df in enumerate(dataframes):
for col in base_columns.keys():
if col not in df.columns:
print(f"DataFrame {i+1}: '{col}' 컬럼이 없습니다.")
any_unmatched = True
elif df[col].dtype != base_columns[col]:
print(f"DataFrame {i+1}: '{col}'의 타입이 {df[col].dtype}로 불일치합니다. (기준: {base_columns[col]})")
print(f"틀린 데이터 샘플: {df[col].sample(5).tolist()}") # 샘플 데이터 출력
any_unmatched = True
# 불일치가 없을 때 concat
if not any_unmatched:
combined_df = pd.concat(dataframes, axis=0, ignore_index=True)
print("모든 데이터프레임이 일치합니다. 결합 완료:")
print(combined_df)
else:
print("불일치가 발견되어 결합할 수 없습니다.")
'랭귀지 > pandas' 카테고리의 다른 글
pandas 주차 (0) | 2024.08.30 |
---|---|
concat (0) | 2024.08.29 |
Pandas에서 `concat`을 사용할 때 값이 있는 데이터프레임이 있는데 결과가 0으로출력 (0) | 2024.08.28 |
pandas transform (0) | 2024.08.28 |
특정열이 1보다큰경우 fillcount (0) | 2024.08.27 |
Comments