>백엔드 개발 >파이썬 튜토리얼 >사전의 Pandas DataFrame 열을 별도의 열로 효율적으로 분할하는 방법은 무엇입니까?

사전의 Pandas DataFrame 열을 별도의 열로 효율적으로 분할하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-16 04:21:13440검색

How to Efficiently Split a Pandas DataFrame Column of Dictionaries into Separate Columns?

Pandas를 사용하여 사전의 열을 별도의 열로 나누기

문제 소개

작업 시 Pandas DataFrames를 사용하면 열에 다음과 같은 사전이 포함되는 경우가 자주 발생합니다. 그 가치. 더 나은 접근성과 조작을 위해 사전을 별도의 열로 분할해야 하므로 추가 데이터 분석에 문제가 발생할 수 있습니다. 이 문제는 사전의 길이가 다양하고 공유 키가 포함된 경우 특히 관련이 있습니다.

원래 접근 방식 및 오류

포럼 게시물의 사용자가 ' 오염물질 수준' 열에는 사전이 포함되어 있습니다. 처음에는 다음 코드를 사용하여 이 열을 분할하려고 시도했습니다.

objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]]
df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)

그러나 이 방법은 범위를 벗어난 슬라이싱으로 인해 IndexError가 발생했습니다.

유니코드 문제

사용자는 'Pollutant' 사전의 유니코드 형식이 의심스럽습니다. 레벨' 열이 문제의 원인일 수 있습니다.

u{'a': '1', 'b': '2', 'c': '3'}

대신:

{u'a': '1', u'b': '2', u'c': '3'}

솔루션

이러한 문제를 해결하려면 다음 접근 방식을 사용하세요. 권장 사항:

import pandas as pd

df['Pollutant Levels'] = df['Pollutant Levels'].apply(lambda x: dict(x))
df2 = pd.json_normalize(df['Pollutant Levels'])

설명

코드의 첫 번째 줄은 유니코드 사전을 표준 사전으로 변환합니다. 두 번째 줄은 사전 열을 별도의 열로 변환하는 편리한 방법을 제공하는 Pandas의 json_normalize 함수를 활용합니다. 이 기능은 비용이 많이 드는 적용 기능이 필요하지 않으며 원하는 DataFrame을 생성합니다.

Station ID     a      b       c
8809           46     3       12
8810           36     5       8
8811           NaN    2       7
8812           NaN    NaN     11
8813           82     NaN     15

위 내용은 사전의 Pandas DataFrame 열을 별도의 열로 효율적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.