Python:Data Frame对象不可迭代

时间:2018-12-07 05:08:57

标签: python pandas

我试图创建一个将文件名作为输入并仅使用pandas读取的函数。但是,当我运行程序时,它将引发错误。 这是我的代码:

import pandas as pd
import numpy as np
import csv
import re

product_description=[]
category=[]

    def get_data(filename):
        with open(filename,'r') as excelfile:
            excelfilereader=pd.read_excel(filename)
            next(excelfilereader)
            for rows in excelfilereader:
                product_description.append(str[rows][0])
                category_description.append(str[rows][1])
            return print(product_description)




get_data('D:\\android\\data1.xlsx')

这是错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-5-db04dbb9b801> in <module>()
     16         return print(product_description)
     17 
---> 18 get_data('D:\\android\\data1.xlsx')
     19 

<ipython-input-5-db04dbb9b801> in get_data(filename)
     10     with open(filename,'r') as excelfile:
     11         excelfilereader=pd.read_excel(filename)
---> 12         next(excelfilereader)
     13         for rows in excelfilereader:
     14             product_description.append(str[rows][0])

TypeError: 'DataFrame' object is not an iterator

1 个答案:

答案 0 :(得分:1)

  1. 您不需要使用with open(filename,'r') as excelfile:。 熊猫可以直接读取excel文件。

  2. 如果您打算使用第二张excel文件     next(excelfilereader)。您可以通过选项sheet_name选择工作表     像这样excelfilereader=pd.read_excel(filename , sheet_name=0 , index_col=None)

  3. 在代码中,您将从第一行追加内容,因此需要设置 header = None

该功能的完整代码如下

import pandas as pd
import numpy as np
import csv
import re

raw_xlsx_path='test.xlsx'


filename = raw_xlsx_path
product_description=[]
category=[]

def get_data(filename):
    excelfilereader=pd.read_excel(filename , sheet_name=0 , index_col=None , header=None)
    product_description = excelfilereader.iloc[:,0].values.tolist()
    category_description = excelfilereader.iloc[:,1].values.tolist()
    return print(product_description)


get_data(filename)