아미(아름다운미소)

데이터프레임의 컬럼명과 타입이 일치하는지 체크하고, 불일치할 경우 틀린 컬럼명과 타입을 출력 본문

랭귀지/pandas

데이터프레임의 컬럼명과 타입이 일치하는지 체크하고, 불일치할 경우 틀린 컬럼명과 타입을 출력

유키공 2024. 8. 29. 20:11
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("불일치가 발견되어 결합할 수 없습니다.")
Comments