我已经导入了一个.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
有没有简单的方法可以做到这一点?预先感谢!
答案 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