ホームページ >バックエンド開発 >Python チュートリアル >辞書の Pandas DataFrame 列を別の列に効率的に分割する方法は?

辞書の Pandas DataFrame 列を別の列に効率的に分割する方法は?

DDD
DDDオリジナル
2024-12-16 04:21:13443ブラウズ

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

Pandas を使用して辞書の列を個別の列に分割する

問題の概要

作業時Pandas DataFrames では、列に辞書が含まれていることがよくあります。価値観。アクセシビリティと操作性を高めるためにディクショナリを個別の列に分割する必要があるため、これによりさらなるデータ分析が困難になる可能性があります。この問題は、辞書の長さが異なり、共有キーが含まれている場合に特に関係します。

独自のアプローチとエラー

フォーラムの投稿でユーザーが説明している DataFrame には、' 「汚染レベル」の列には辞書が含まれています。最初に、次のコードを使用してこの列を分割しようとしました:

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

しかし、このメソッドは範囲外のスライスにより IndexError が発生しました。

Unicode の問題

ユーザーはさらに、「汚染物質」に含まれる辞書の Unicode 形式が不正であると疑っています。レベルの列が問題の原因となっている可能性があります。これらは次の形式になります:

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'])

コードの最初の行は、Unicode 辞書を標準辞書に変換します。 2 行目では、Pandas の json_normalize 関数を利用しています。これは、辞書の列を個別の列に変換する便利な方法を提供します。この関数は、コストのかかる適用関数の必要性を回避し、目的の DataFrame を生成します:

以上が辞書の Pandas DataFrame 列を別の列に効率的に分割する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。