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文件?
先感谢您
有一个解决方案,但 csv 的处理方式与 excel 不同。
\n来自文档,对于 csv:
\n\n\nusecols :类似列表或可调用,默认 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
对于 Excel:
\n\n\nusecols : int 或 list, 默认 None
\n\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
所以你需要这样称呼它:
\nxl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='ForeignKey')\nRun Code Online (Sandbox Code Playgroud)\n如果您还需要'number':
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols='number,ForeignKey')\nRun Code Online (Sandbox Code Playgroud)\n编辑:\n你需要输入 Excel 列的名称而不是数据的名称。\n另一个答案解决了这个问题。\n但是你不需要 'B:B','B' 会解决这个问题,但它赢了不要用数字来改善 usecols。
\n如果您可以立即加载所有数据,那么解决此问题的最佳方法可能是解析所有列,然后选择所需的列:
\nxl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2')['ForeignKey']\nRun Code Online (Sandbox Code Playgroud)\n