首页 > 后端开发 > Python教程 > 如何有效地将 Pandas DataFrame 字典列拆分为单独的列?

如何有效地将 Pandas DataFrame 字典列拆分为单独的列?

DDD
发布: 2024-12-16 04:21:13
原创
438 人浏览过

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 字典转换为标准字典。第二行利用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板