python - 在python中拆分键值字符串并将其移动到df列中
问题描述
这是我拥有的列,我想拆分为键值并存储在 pandas df 的新列中。
{"FontStyle"=>"Gill Sans Standard", "FontSize"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style":"Script","Font Size":"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style":"Gill Sans Standard","Font Size":"Medium (3mm)"}
主要问题是其中一些有 '=>' 而另一些有冒号
我想要 df 中的两个新列,一个用于字体样式,另一个用于字体大小以及其中的尊重值
如果有人可以帮助我实现这一点,那就太好了,而且如果您可以向我推荐一些正则表达式的书/教程,那将是很棒的。
谢谢
解决方案
到目前为止,这不是最有效的代码,但这可以完成工作。
import pandas as pd
import ast
text = '''{"FontStyle"=>"Gill Sans Standard", "FontSize"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style"=>"Script","Font Size"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}'''
my_list = []
text = text.replace("FontStyle", "Font Style")
text = text.replace("FontSize", "Font Size")
text = text.replace("=>", ":")
text = text.split("\n")
for one_dict in text:
my_list.append(ast.literal_eval(one_dict))
df = pd.DataFrame(my_list)
print(df)
上述代码的输出:
Font Size Font Style
0 Medium (3mm) Gill Sans Standard
1 Medium (3mm) Gill Sans Standard
2 Medium (3mm) Script
3 Medium (3mm) Gill Sans Standard
我希望这有帮助。:-) 如果有,请告诉我。
推荐阅读
- python - Telegram bot - 如何每天发送消息
- django - 如何为引用另一个表的列的列创建 MAX 值
- macos - 在 Mac 上使用 codesign 实用程序时是否默认启用时间戳?
- machine-learning - 什么是无意义的数据?
- hyperledger-fabric - Hyperledger Fabric:从网络中删除测试数据
- python - 如何将一种 json 类型模式映射或转换为另一种模式
- google-bigquery - Left Join 未针对原始 GBQ 查询返回相同数量的行
- html - SVG 文本元素不可见
- python - 距数据框列的最后 20 个条目的最大值的距离/计数
- reactjs - 材质 UI 反应缺少动作表标题