列表中的元素到要导出的数据框名称
elements from a list to dataframe names for export
我有一个数据帧名称列表
list = ['one','two','three','four']
我想导出它们:
for i in range (0,len(list)):
with pd.ExcelWriter(output_path + '//' + 'file'+i+'.xlsx') as writer:
list[i].to_excel(writer, index=False)
它显示此错误:AttributeError: 'str' object has no attribute 'to_excel'
基本上我需要:
for i in range (0,len(list)):
with pd.ExcelWriter(output_path + '//' + 'file1'.xlsx') as writer:
one.to_excel(writer, index=False)
并对列表中的所有元素执行此操作
您需要实际的数据框才能与 .to_excel 一起使用。如果你只有一个字符串,它将失败,因为你会要求 .to_excel 写入字符串 'one',而不是你想用字符串 'one' 引用的数据框.
您可以有一个数据帧列表并遍历它们,所以让我们假设您获得了该数据帧列表。我们还假设您使用的名称 '0'、'1'、'2' 对应于列表中数据框的索引,而不是原来的 'one'、'two' ...
代码中有 1 个小错误 'file' + i -- 将索引 i(指向列表中的项目)与项目本身混淆了。此外,请注意整数与字符串——i 是整数,因此使用 str(i) 转换为字符串,以便它可以成为更大字符串的一部分。
避免在代码中使用 'list',因为列表在 Python 中已经有含义了——所以我们称它为 'list_of_dfs'.
此外,范围默认从0开始,所以不需要指定。
因此,将所有这些放在一起,您可以使用其中任何一个:
list_of_dfs = [df0, df1, df2] # assume you get the list of dfs
for i in range(len(list)):
with pd.ExcelWriter(output_path + '//' + 'file'+ str(i) +'.xlsx') as writer:
list_of_dfs[i].to_excel(writer, index=False)
for df in list_of_dfs:
with pd.ExcelWriter(output_path + '//' + 'file' + str(list_of_dfs.index(df)) +'.xlsx') as writer:
df.to_excel(writer, index=False)
有一个列表
list_of_dfs = [df0, df1, df2]
我用数据框创建了一个字典(这是关键):
UniqueSource = df_raw.Key.unique()
DataFrameDict = {elem : pd.DataFrame for elem in UniqueSource}
for key in DataFrameDict.keys():
DataFrameDict[key] = df_raw[:][df_raw.Key == key]
然后我创建了路径中所有文件的列表:
outlib = os.listdir(output_lib)
outlib_names = [s.replace(".xls","") for s in outlib]
最后,通过检查 outlib_names 中的每个 list_of_dfs,我从字典中创建了一个临时数据框,它的文件已经存在,它将打开文件并导出数据框进入 sheet,否则如果文件不存在,它将简单地将数据框导出为路径中的新文件:
for f in list_of_dfs:
check = (f in outlib_names)
if check is True:
temp = DataFrameDict[f]
with pd.ExcelWriter(output_lib + "\" + f + '.xlsx', engine='openpyxl', mode='a') as writer:
temp.to_excel(writer, sheet_name = "'" + f "'", index = False)
else:
temp = DataFrameDict[f]
with pd.ExcelWriter(output_lib + "\" + f + '.xlsx') as writer:
temp.to_excel(writer, sheet_name="'" + f + "'", index=False)
我有一个数据帧名称列表
list = ['one','two','three','four']
我想导出它们:
for i in range (0,len(list)):
with pd.ExcelWriter(output_path + '//' + 'file'+i+'.xlsx') as writer:
list[i].to_excel(writer, index=False)
它显示此错误:AttributeError: 'str' object has no attribute 'to_excel'
基本上我需要:
for i in range (0,len(list)):
with pd.ExcelWriter(output_path + '//' + 'file1'.xlsx') as writer:
one.to_excel(writer, index=False)
并对列表中的所有元素执行此操作
您需要实际的数据框才能与 .to_excel 一起使用。如果你只有一个字符串,它将失败,因为你会要求 .to_excel 写入字符串 'one',而不是你想用字符串 'one' 引用的数据框.
您可以有一个数据帧列表并遍历它们,所以让我们假设您获得了该数据帧列表。我们还假设您使用的名称 '0'、'1'、'2' 对应于列表中数据框的索引,而不是原来的 'one'、'two' ...
代码中有 1 个小错误 'file' + i -- 将索引 i(指向列表中的项目)与项目本身混淆了。此外,请注意整数与字符串——i 是整数,因此使用 str(i) 转换为字符串,以便它可以成为更大字符串的一部分。
避免在代码中使用 'list',因为列表在 Python 中已经有含义了——所以我们称它为 'list_of_dfs'.
此外,范围默认从0开始,所以不需要指定。
因此,将所有这些放在一起,您可以使用其中任何一个:
list_of_dfs = [df0, df1, df2] # assume you get the list of dfs
for i in range(len(list)):
with pd.ExcelWriter(output_path + '//' + 'file'+ str(i) +'.xlsx') as writer:
list_of_dfs[i].to_excel(writer, index=False)
for df in list_of_dfs:
with pd.ExcelWriter(output_path + '//' + 'file' + str(list_of_dfs.index(df)) +'.xlsx') as writer:
df.to_excel(writer, index=False)
有一个列表
list_of_dfs = [df0, df1, df2]
我用数据框创建了一个字典(这是关键):
UniqueSource = df_raw.Key.unique() DataFrameDict = {elem : pd.DataFrame for elem in UniqueSource} for key in DataFrameDict.keys(): DataFrameDict[key] = df_raw[:][df_raw.Key == key]
然后我创建了路径中所有文件的列表:
outlib = os.listdir(output_lib)
outlib_names = [s.replace(".xls","") for s in outlib]
最后,通过检查 outlib_names 中的每个 list_of_dfs,我从字典中创建了一个临时数据框,它的文件已经存在,它将打开文件并导出数据框进入 sheet,否则如果文件不存在,它将简单地将数据框导出为路径中的新文件:
for f in list_of_dfs: check = (f in outlib_names) if check is True: temp = DataFrameDict[f] with pd.ExcelWriter(output_lib + "\" + f + '.xlsx', engine='openpyxl', mode='a') as writer: temp.to_excel(writer, sheet_name = "'" + f "'", index = False) else: temp = DataFrameDict[f] with pd.ExcelWriter(output_lib + "\" + f + '.xlsx') as writer: temp.to_excel(writer, sheet_name="'" + f + "'", index=False)