要将字符串转换为实际的dict,可以执行df
['Pollutant Levels'].map(eval)。之后,可以使用以下解决方案将dict转换为不同的列。
通过一个小例子,你可以使用.apply(pd.Series):
In [2]: df = pd.Dataframe({'a':[1,2,3], 'b':[{'c':1}, {'d':3}, {'c':5, 'd':6}]})In [3]: dfOut[3]: a b0 1{u'c': 1}1 2{u'd': 3}2 3 {u'c': 5, u'd': 6}In [4]: df['b'].apply(pd.Series)Out[4]: c d0 1.0 NaN1 NaN 3.02 5.0 6.0要将其与数据框的其余部分组合,可以concat将其他列与上述结果结合在一起:
In [7]: pd.concat([df.drop(['b'], axis=1), df['b'].apply(pd.Series)], axis=1)Out[7]: a c d0 1 1.0 NaN1 2 NaN 3.02 3 5.0 6.0
使用我的代码,如果我省略了这一iloc部分,这也可以工作:
In [15]: pd.concat([df.drop('b', axis=1), pd.Dataframe(df['b'].tolist())], axis=1)Out[15]: a c d0 1 1.0 NaN1 2 NaN 3.02 3 5.0 6.0


