序列化数组到Panda DataFrame中的列

时间:2018-12-04 19:26:54

标签: python pandas dataframe serialization

我已经导入了一个.csv文件,它包含一个带有序列化数组的列。 如何使4列超出数组?我已经用regex和phpserialize包尝试了一些操作,但无法完成。

这是列的外观:

forecast
---------------------------------------------------------------------------
a:4:{s:5:"sunny";i:10;s:5:"rainy";i:70;s:8:"thundery";i:0;s:5:"snowy";i:20;}

现在,我希望整个专栏分成4个这样的列:

sunny|rainy|thundery|snowy
--------------------------
10   |70   |0       |20

有没有简单的方法可以做到这一点?预先感谢!

1 个答案:

答案 0 :(得分:1)

如果预测以字符串形式保存在数据框中,则可以使用正则表达式提取所需的值,然后旋转数据框。这样的事情应该可以帮助您入门(我已经在行中添加了新值,只是为了演示):

>>> df
                                            forecast
0  'a:4:{s:5:"sunny";i:10;s:5:"rainy";i:70;s:8:"t...'
1  'a:4:{s:5:"sunny";i:20;s:5:"rainy";i:80;s:8:"t...'

df.forecast.str.extractall('"(?P<column>.*?)";i:(?P<value>\d+)').reset_index(level=0).pivot('level_0','column','value')
column  rainy snowy sunny thundery
level_0                           
0          70    20    10        0
1          80    10    20        5