首页 > 解决方案 > 熊猫从行中的字符串中旋转/堆叠/重塑

问题描述

接受 Sammy 的回答,因为它确实解决了原始帖子。在使用解决方案时进行编辑以包括进一步的复杂性,一些值本身在其中有空格,因此正则表达式也会破坏这些。包括 key1=value 11 中的示例更改。

这些数据似乎被设计为对分析不友好。

我想以以下形式转换数据集:

pd.Series(["key1=value1 key2=value2 key3=value3", "key1=value 11 key2=value22 key3=value33", "key1=value111,key2=value222,key3=value333"])

#0          key1=value1 key2=value2 key3=value3
#1       key1=value 11 key2=value22 key3=value33
#2    key1=value111,key2=value222,key3=value333
#dtype: object

使用预期的输出:

pd.DataFrame.from_dict({"key1":["value1", "value 11", "value111"], "key2":["value2", "value22", "value222"], "key3":["value3", "value33", "value333"]})

#       key1      key2      key3
#0    value1    value2    value3
#1   value 11   value22   value33
#2  value111  value222  value333

挑战当然是必须从字符串中解析变量名称和值。我也想保持索引不变。

标签: pandas

解决方案


您可以使用 python 完成整个转换,这应该更快更容易。给定一个输入 Series s

import re 
pd.DataFrame([dict(e.split('=') for e in re.split("[\s,]", ent)) for ent in s])
 
       key1      key2      key3
0    value1    value2    value3
1   value11   value22   value33
2  value111  value222  value333

推荐阅读