如何使用 pandas 将字符串转换为数据表 excel?

how to convert string to datatable excel using pandas?

按照我之前的 ,现在我试图将数据放入 table 并将其转换为 excel 文件,但我无法获取 table 我想要,如果有人可以帮助或解释它的原因,这是我想要得到的最终输出

这是我正在打印的数据

Hotel1 : chambre double - {'lpd': ('112', '90','10'), 'pc': ('200', '140','10')}

这是我的代码

import pandas as pd
import ast  
s="Hotel1 : chambre double - {'lpd': ('112', '90','10'), 'pc': ('200', '140','10')}"

ds = []

for l in s.splitlines():
        d = l.split("-")

        if len(d) > 1:
            df = pd.DataFrame(ast.literal_eval(d[1].strip()))
            ds.append(df)
for df in ds:
        df.reset_index(drop=True, inplace=True)

df = pd.concat(ds, axis= 1)

cols = df.columns

cols = [((col.split('.')[0], col)) for col in df.columns]

df.columns=pd.MultiIndex.from_tuples(cols)

print(df.T)
df.to_excel("v.xlsx")



但这就是我得到的

请问我该如何解决这个问题,这是最后也是最重要的部分,在此先感谢您。

在 for 循环中,值“Hotel1 : chambre double”保存在 d[0] 中 (通过打印 d[0] 自己尝试。)

在您之前的问题中,“Name3”列是由以下代码行构建的:

cols = [((col.split('.')[0], col)) for col in df.columns]

现在,要保存“Hotel1 : chambre double”,您需要在第一个 for 循环中访问它。

import pandas as pd
import ast  
s="Hotel1 : chambre double - {'lpd': ('112', '90','10'), 'pc': ('200', '140','10')}"
ds = []
cols = []
for l in s.splitlines():
        d = l.split("-")

        if len(d) > 1:

            df = pd.DataFrame(ast.literal_eval(d[1].strip()))
            ds.append(df)
            cols2 = df.columns
            cols = [((d[0], col)) for col in df.columns]
        
for df in ds:
        df.reset_index(drop=True, inplace=True)

df = pd.concat(ds, axis= 1)

df.columns=pd.MultiIndex.from_tuples(cols)

print(df.T)
df.T.to_csv(r"v.csv")

这是可行的,因为您在 for 循环中获取 d[0](酒店名称),并在您有权访问该对象的同时为您的列名称创建元组。

然后您在循环外已有的代码行中创建一个多索引列:

df.columns=pd.MultiIndex.from_tuples(cols)

最后,要回答 excel 查询的输出,请在底部添加以下代码行:

df.T.to_csv(r"v.csv")