python 字典组成的列表 pandas_将Pandas列中的字典/列表拆分为单独的列

将Pandas列中的字典/列表拆分为单独的列

我将数据保存在PostgreSQL数据库中。我正在使用Python2.7查询这些数据,并将其转换为PandasDataFrame。但是,这个dataframe的最后一列有一个字典(或List?)其中的价值。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,并且它们总是以相同的顺序出现(a第一,b第二,第三次)。

下面的代码用于正确地返回我想要的东西(Df 2)。

[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()和.application方法不适用于我的代码,因为它是一个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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值