아미(아름다운미소)

df 의 a컬럼값과 df2의 a,b,c,d groupby sum e의 값이 같은지 검증하는방법 본문

랭귀지/pandas

df 의 a컬럼값과 df2의 a,b,c,d groupby sum e의 값이 같은지 검증하는방법

유키공 2024. 8. 26. 10:54
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'a': ['A', 'A', 'B', 'B'],
    'b': ['X', 'X', 'Y', 'Y'],
    'c': [1, 1, 2, 2],
    'd': [10, 20, 10, 20],
    'e': [100, 200, 300, 400],
    'f': [150, 250, 350, 450]  # f 컬럼 추가
}
df1 = pd.DataFrame(data)
df2 = df1.copy()  # df2는 df1과 동일

# df1을 그룹화하고 e 컬럼의 합을 계산
grouped_df1 = df1.groupby(['a', 'b', 'c', 'd'])['e'].sum().reset_index()

# df2는 그대로 사용
# df2의 f 컬럼을 그대로 가져오기 위해 df1과 같은 방법으로 그룹화
grouped_df2 = df2[['a', 'b', 'c', 'd', 'f']]

# 두 그룹을 병합하여 e와 f의 값을 비교
merged = pd.merge(grouped_df1, grouped_df2, on=['a', 'b', 'c', 'd'])

# e와 f의 값이 같지 않은 그룹 찾기
result = merged[merged['e'] != merged['f']]

print(result)
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'a': ['A', 'A', 'B', 'B'],
    'b': ['X', 'X', 'Y', 'Y'],
    'c': [1, 1, 2, 2],
    'd': [10, 20, 10, 20],
    'e': [100, 200, 300, 400],
    'f': [150, 250, 350, 450]  # f 컬럼 추가
}
df1 = pd.DataFrame(data)
df2 = df1.copy()  # df2도 df1과 동일하게 복사

# df1을 그룹화하고 e 컬럼의 합을 계산
grouped_df1 = df1.groupby(['a', 'b', 'c', 'd'])['e'].sum().reset_index()

# df1을 그룹화하고 f 컬럼의 합을 계산
grouped_df1_f = df1.groupby(['a', 'b', 'c', 'd'])['f'].sum().reset_index()

# 두 그룹을 병합하여 e와 f의 값을 비교
merged = pd.merge(grouped_df1, grouped_df1_f, on=['a', 'b', 'c', 'd'], suffixes=('_e', '_f'))

# e와 f의 값이 같지 않은 그룹 찾기
result = merged[merged['e_e'] != merged['f_f']]

print(result)
import pandas as pd

# 예시 데이터프레임 생성
df = pd.DataFrame({
    'a': [1, 2, 3],
})

df2 = pd.DataFrame({
    'a': [1, 1, 2, 2, 3],
    'b': [3, 3, 4, 4, 5],
    'c': [5, 5, 6, 6, 7],
    'd': [10, 20, 10, 20, 30],
    'e': [2, 3, 1, 1, 4]
})

# df2의 a로 그룹화하여 e의 합계 계산
grouped_sum_df2 = df2.groupby('a')['e'].sum().reset_index()

# df의 a 컬럼과 df2에서 그룹화한 결과를 병합
merged = pd.merge(df, grouped_sum_df2, on='a', how='left')

# 병합된 결과 확인
print("병합된 데이터프레임:\n", merged)

# 'e' 컬럼의 이름 확인
print("컬럼 이름:\n", merged.columns)

# 틀린 값 찾기
# df에는 e 컬럼이 없으므로, df2의 e의 합계와 비교
# df의 e를 None으로 설정하지 않고, 단순히 그룹화된 결과만 확인하고 싶다면
mismatched = merged[merged['e'].isnull() | (merged['e'] != 0)]

print("틀린 값:\n", mismatched)
import pandas as pd

# 예시 데이터프레임 생성
df = pd.DataFrame({
    'a': [1, 2, 3],
})

df2 = pd.DataFrame({
    'a': [1, 1, 2, 2, 3],
    'b': [3, 3, 4, 4, 5],
    'c': [5, 5, 6, 6, 7],
    'd': [10, 20, 10, 20, 30],
    'e': [2, 3, 1, 1, 4]
})

# df2의 a로 그룹화하여 e의 합계 계산
grouped_sum_df2 = df2.groupby('a')['e'].sum().reset_index()

# df의 a 컬럼과 df2에서 그룹화한 결과를 병합
merged = pd.merge(df, grouped_sum_df2, on='a', how='left', suffixes=('', '_grouped'))

# 병합된 결과 확인
print("병합된 데이터프레임:\n", merged)

# e의 값이 서로 다른 경우 찾기
# df에는 e 컬럼이 없으므로, df2의 e의 합계와 비교
# 만약 df의 e를 None으로 설정하지 않고, 단순히 그룹화된 결과만 확인하고 싶다면
mismatched = merged[merged['e_grouped'].isnull() | (merged['e_grouped'] != 0)]

print("틀린 값:\n", mismatched)
Comments