我想将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文件?
先谢谢您
答案 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并为其指定解决方案。