【问题标题】:how to convert string to datatable excel using pandas?如何使用熊猫将字符串转换为数据表excel?
【发布时间】:2021-10-28 11:28:57
【问题描述】:

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

这是我正在打印的数据

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")



但这就是我得到的

我该如何解决这个问题,请这是最后也是最重要的部分,提前谢谢你。

【问题讨论】:

    标签: python excel pandas dataframe datatable


    【解决方案1】:

    在 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")
    

    【讨论】:

    • 谢谢!但它仍然显示结构错误的数据不像我想要的那样返回到行我添加了一个图像来解释 xlsx 文件中的输出
    • 嗨 HiFAR,你能解释一下你现在得到的和你想要得到的吗?抱歉,我看不出有什么不同!
    • 我想要的表格在第一张图片中数据应该是相邻的,都是靠酒店的名字,我解释了吗?
    • 嗨 HiFAR,发生这种情况的原因是因为您添加的代码行 df.to_excel("v.xlsx") 没有提供与您最初要求的输出相同的输出,即与 df.T 对齐的输出。我已经修改了我的答案以反映您正在寻找的内容,以及我的 csv 输出图像。
    • 是的,将 df.to_excel("v.xlsx") 更改为 df.T.to_excel("v.xlsx") 它工作正常!谢谢 !!还有一个问题,如果我可以问当我有酒店列表时如何在 excel 文件中显示所有数据?它仅适用于列表中的最后一家酒店。
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2019-04-16
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多