Pandas数据框读取excel,然后转换为字典

iezvtpos  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(163)

我有这个密码

df = pd.read_excel('Simulation log.xlsx', sheet_name='Materials').transpose()
df = df.rename(columns=df.iloc[1])
df.to_dict()
{'tim': {'density': "{'option': 'constant', 'value': 2300.0}",
'specific_heat': "{'option': 'constant', 'value': 1000.0}",
'thermal_conductivity': "{'option': 'constant', 'value': 2.7}"}}

问题是我不想在字典值周围有““。我必须把它们作为字典沿着。我不确定如何以及何时修复它。是当我阅读excel并创建数据框时还是当我有字典时。有什么建议吗?

xam8gpfp

xam8gpfp1#

如果需要转换由字典的字符串代表填充的一列tim

import ast

df = pd.read_excel('Simulation log.xlsx', sheet_name='Materials').transpose()
df = df.rename(columns=df.iloc[1])
df['tim'] = df['tim'].apply(ast.literal_eval)
print (df.to_dict())
{'tim': {'density': {'option': 'constant', 'value': 2300.0},
         'specific_heat': {'option': 'constant', 'value': 1000.0},
         'thermal_conductivity': {'option': 'constant', 'value': 2.7}}}

如果所有列都用字符串表示字典,并且需要转换它们,请用途:

df = df.applymap(ast.literal_eval)
print (df.to_dict())

如果需要仅转换某些列:

cols = ['tim','rob', 'john']
df[cols] = df[cols].applymap(ast.literal_eval)
print (df.to_dict())
oo7oh9g9

oo7oh9g92#

问题可能是它从Excel文件中读取字符串形式的数据,您可以给予一下(我无法证明,因为我没有您的特定文件):

import pandas as pd
import ast

df = pd.read_excel('Simulation log.xlsx', sheet_name='Materials').transpose()
df = df.rename(columns=df.iloc[1])

# convert string values to dictionaries
for column in df.columns:
    df[column] = df[column].apply(lambda x: ast.literal_eval(x))

# convert df to dict
result_dict = df.to_dict()

print(result_dict)

相关问题