如何将指定格式字符串转换为Pandas DataFrame并得到3行结果?
解决方法
你的问题出在直接把字符串当作字典传入pd.DataFrame(),这样只会生成以整个字符串为列名的单行空数据。要得到3行的DataFrame,需要先把字符串转换成合法的Python字典,再传入DataFrame构造函数。
推荐方案:用ast.literal_eval安全解析字符串
ast.literal_eval可以安全地将字符串形式的Python数据结构转换成实际对象,比直接用eval更安全,避免代码注入风险。
修正后的代码:
import pandas as pd import ast sample = "'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]" # 给字符串添加外层大括号,使其符合字典格式 dict_str = f"{{{sample}}}" # 解析字符串为字典 data_dict = ast.literal_eval(dict_str) # 生成DataFrame df = pd.DataFrame(data_dict) df.to_excel("output.xlsx", index=False)
效果说明
运行后生成的DataFrame会有3行,列名分别为A、B、C,对应的数据如下:
| A | B | C |
|---|---|---|
| 1 | 4 | 7 |
| 2 | 5 | 8 |
| 3 | 6 | 9 |
原代码问题解析
原代码中的pd.DataFrame({sample})实际上创建了一个以整个sample字符串为键的字典(类似{"'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]": None}),Pandas会把这个键作为列名,生成一行空数据,这和你想要的结果完全不符。
内容的提问来源于stack exchange,提问作者yeolwoo
相关产品推荐
相关产品推荐

