2016-03-09 217 views
2

我想写一个4表,3列和50行数据框文件到csv使用熊猫。我收到以下错误AttributeError: 'dict' object has no attribute 'to_csv'。我相信我正确地编写了语法,但是任何人都可以指出我的语法在尝试将数据框写入csv时不正确吗?Python - 熊猫 - 写数据框到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 
+2

由于您正在使用多张工作表读取xlsx,因此您会得到一个数据框字典,其中键为工作表名称,数据为数据框。您需要将其转换为单个数据框(concat,或根据您的要求进行合并),或者在dict的循环中编写csvs。 – jeremycg

+0

你知道我可以用什么语法来调用一个sheetname关键字吗? – pHorseSpec

回答

2

你的直觉是对的;代码中的语法没有任何问题。

您收到AttributeError,因为你是你的工作簿中读取来自多个工作表数据,生成DataFrames的字典(而不是一个数据帧),从中你试图to_csv(仅适用于一个数据帧的方法)。

在编写代码时,您生成的字典的键与工作表的名称相对应,并且值分别为各自的DataFrame。这一切都在read_excel()方法的文档中解释。

要写出一个CSV文件,从所有的工作表包含聚合数据,你可以通过工作表循环,每个数据帧添加到您的文件(这个作品,如果你的床单具有相同的结构和尺寸):

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)