将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吗?
繁星淼淼
千万里不及你
红糖糍粑
相关分类