pandas - 熊猫从行中的字符串中旋转/堆叠/重塑
问题描述
接受 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
挑战当然是必须从字符串中解析变量名称和值。我也想保持索引不变。
解决方案
您可以使用 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
推荐阅读
- facebook-graph-api - Facebook Business Ads Python:访问令牌不同类型的权限
- scala - 如何使用akka测试套件在scala测试中以异步方式获取未来的价值
- php - 从 Wordpress 数据库中检索和显示数据
- javascript - Google Chrome DevTools 无法解析 SourceMap:chrome-extension
- android - 将 executePendingBindings() 与 gridView 一起使用
- c# - 如何在 C# 中仅为特定子类在父类中设置变量值?
- asp.net-core - web.config 中的 .NET Core AppSettings 问题
- laravel - 在 Bitbucket 管道中使用 Elasticsearch 服务
- highcharts - 为了显示工具提示,有没有办法增加特定点的灵敏度?
- python - SSL:CERTIFICATE_VERIFY_FAILED 尝试使用 django 验证 reCAPTCHA