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

Fad*_*dri 6 python dataframe pandas

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

例如,我有一个 Excel 文件,在第 2 表中有两列:A 列中的“数字”和 B 列中的“外键”)。我想将“外键”导入到数据框中。我使用以下脚本执行此操作:

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

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

       number ForeignKey
0       1        abc
1       2        def
2       3        ghi
Run Code Online (Sandbox Code Playgroud)

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

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

根据以下链接中的讨论,上面的代码运行良好,但对于read_csv.

[如何在使用 Pandas 读取 csv 文件时删除它的特定列?

有没有办法做到这一点来读取excel文件?

先感谢您

Ale*_*xis 2

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

\n

来自文档,对于 csv:

\n
\n

usecols :类似列表或可调用,默认 None

\n

例如,有效的类似列表的 usecols 参数将为 [0, 1, 2] 或 [\xe2\x80\x98foo\xe2\x80\x99, \xe2\x80\x98bar\xe2\x80\x99, \xe2\ x80\x98baz\xe2\x80\x99]。

\n
\n

对于 Excel:

\n
\n

usecols : int 或 list, 默认 None

\n
    \n
  • 如果 None 则解析所有列,
  • \n
  • 如果是 int 则表示要解析的最后一列
  • \n
  • 如果是整数列表则表示要解析的列号列表
  • \n
  • 如果字符串则表示以逗号分隔的 Excel 列字母和列范围列表(例如 \xe2\x80\x9cA:E\xe2\x80\x9d 或 \xe2\x80\x9cA,C,E:F\xe2\x80\x9d) 。范围包括两边
  • \n
\n
\n

所以你需要这样称呼它:

\n
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='ForeignKey')\n
Run Code Online (Sandbox Code Playgroud)\n

如果您还需要'number'

\n
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='number,ForeignKey')\n
Run Code Online (Sandbox Code Playgroud)\n

编辑:\n你需要输入 Excel 列的名称而不是数据的名称。\n另一个答案解决了这个问题。\n但是你不需要 'B:B','B' 会解决这个问题,但它了不要用数字来改善 usecols。

\n

如果您可以立即加载所有数据,那么解决此问题的最佳方法可能是解析所有列,然后选择所需的列:

\n
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2')['ForeignKey']\n
Run Code Online (Sandbox Code Playgroud)\n