我正在尝试使用pandas将4个表,3列和50行数据帧文件写入csv.我收到以下错误:AttributeError:’dict’对象没有属性’to_csv’.我相信我正在正确地编写语法,但有人能指出我的语法在尝试将数据帧写入csv时不正确吗?
'dict' object has no attribute 'to_csv'
import pandas as pd
import numpy as np
df = pd.read_excel("filelocation.xlsx",
sheetname=['pnl1 Data ','pnl2 Data','pnl3 Data','pnl4 Data'],
skiprows=8, parse_cols="B:D", keep_default_na='FALSE', na_values=['NULL'])
df.to_csv('filelocation.csv', line_terminator=',', index=False, header=False) #error occurs on this line
解决方法:
你的直觉是正确的;代码中的语法没有错.
您正在接收AttributeError,因为您正在从工作簿中的多个工作表中读取数据,生成DataFrames的字典(而不是一个DataFrame),您可以从中尝试to_csv(一种仅适用于DataFrame的方法).
在编写代码时,您生成的字典的键对应于工作表的名称,值是相应的DataFrame.这一切都在read_excel()
方法的文档中进行了解释.
要编写包含所有工作表中的聚合数据的csv文件,您可以遍历工作表并将每个DataFrame附加到您的文件中(如果您的工作表具有相同的结构和尺寸,这将起作用):
import pandas as pd
import numpy as np
sheets = ['pnl1 Data ','pnl2 Data','pnl3 Data','pnl4 Data']
for sheet in sheets:
df = pd.read_excel("filelocation.xlsx",
sheetname=sheet,
skiprows=8,
parse_cols="B:D",
keep_default_na='FALSE',
na_values=['NULL'])
with open('filelocation.csv', 'a') as f:
df.to_csv(f, line_terminator=',', index=False, header=False)