如何使用 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")
按照我之前的
这是我正在打印的数据
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")