python 字典组成的列表 pandas_Python-将pandas列中的字典/列表拆分为单独的列

我将数据保存在postgreSQL数据库中。我正在使用Python2.7查询此数据并将其转换为Pandas DataFrame。但是,此数据框的最后一列中包含值的字典(或列表?)。DataFrame看起来像这样:

[1] df

Station ID Pollutants

8809 {"a": "46", "b": "3", "c": "12"}

8810 {"a": "36", "b": "5", "c": "8"}

8811 {"b": "2", "c": "7"}

8812 {"c": "11"}

8813 {"a": "82", "c": "15"}

我需要将此列拆分为单独的列,以便DataFrame如下所示:

[2] df2

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

我遇到的主要问题是列表的长度不同。但是所有列表最多只能包含相同的3个值:a,b和c。而且它们始终以相同的顺序出现(第一,第二,第三)。

以下代码用于工作并返回我想要的内容(df2)。

[3] df

[4] objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]]

[5] df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)

[6] print(df2)

我上周才运行此代码,并且运行良好。但是现在我的代码坏了,我从第[4]行得到了这个错误:

IndexError: out-of-bounds on slice (end)

我没有对代码进行任何更改,但是现在遇到了错误。我觉得这是由于我的方法不够健壮或不合适。

对于如何将列表的此列拆分为单独的列的任何建议或指导将不胜感激!

编辑:我认为.tolist()和.apply方法不适用于我的代码,因为它是一个unicode字符串,即:

#My data format

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

#and not

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

数据是从PostgreSQL数据库以这种格式导入的。这个问题有什么帮助或想法吗?有没有办法转换unicode?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值