将Excel中的某些列读取到数据框

时间:2019-01-09 09:08:57

标签: python pandas dataframe

我想将Excel文件中的某些列读入数据框,但是我想用列标题名称指定该列。

例如,我有一个excel文件,在工作表2中有两列:A列为“ number”,B列为“ ForeignKey”。我想将“ ForeignKey”导入数据框。我使用以下脚本进行了此操作:

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols=[0,1]) 

它在我的xl_file中显示以下内容:

       number ForeignKey
0       1        abc
1       2        def
2       3        ghi

如果列数较少,我可以通过指定usecols = [1]获得“ ForeignKey”。但是,如果我有很多列并且知道列名模式,则通过指定列名会更容易。我尝试了以下代码,但给出了空的数据框。

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols=['ForeignKey']) 

根据以下链接中的讨论,以上代码适用于read_csv。

[How to drop a specific column of csv file while reading it using pandas?

有没有办法读取Excel文件?

先谢谢您

2 个答案:

答案 0 :(得分:1)

有解决方案,但csv的处理方式与excel不同。

从文档中获取,用于csv:

  

usecols:类似于列表或可调用的列表,默认为无

     

例如,有效的类似列表的usecols参数将为[0,1,2]或['foo','bar','baz']。

对于Excel:

  

usecols:整数或列表,默认为无

     
      
  • 如果没有,则解析所有列,
  •   
  • 如果int则指示要解析的最后一列
  •   
  • 如果为整数列表,则表示要解析的列号列表
  •   
  • 如果字符串则表示Excel列字母和列范围的逗号分隔列表(例如“ A:E”或“ A,C,E:F”)。范围包括双方
  •   

所以您需要这样称呼它:

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='ForeignKey')

,如果您还需要'number'

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='number,ForeignKey')

编辑: 您需要输入excel列的名称而不是数据的名称。 另一个答案解决了这个问题。 但是您不需要'B:B','B'将完成 BUT 的技巧,该技巧不会提高数字的使用效率。

如果您可以在短时间内加载所有数据,也许解决此问题的最佳方法是解析所有列,然后选择所需的列:

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2')['ForeignKey']

答案 1 :(得分:1)

您还需要以范围等格式传递excel列名。 colname:colname

例如,如果ForeignKey出现在Excel工作表2的列B中,则执行-

xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='B:B') 

请参阅Github issue并为其指定解决方案。