如何在python pandas中使用sep =分隔列?

时间:2016-10-26 19:23:16

标签: python python-3.x pandas

我在xlsx文件中有以下表格:

emp_num | Name | Salary
551234 | Joe | 5000
551234 | Dan | 5001
551234 | James | 5002
551234 | Li | 5003
551234 | Suzi | 5004

我尝试使用sep= " | "分隔列 这是我的代码:

df = pd.read_excel('I21.xlsx', sep=' | ', header=None)

运行代码之后我得到了: 我只使用header=None来更清楚地显示只有一列。

                         0
0  emp_num | Name | Salary
1      551234 | Joe | 5000
2      551234 | Dan | 5001
3    551234 | James | 5002
4       551234 | Li | 5003

3 个答案:

答案 0 :(得分:1)

您可以按如下方式使用read_csv(),请注意sep参数接受正则表达式:

  

sep:str,默认','       分隔符使用。如果sep为None,则会尝试自动确定       这个。超过1个字符且与'\ s +'不同的分隔符将是       解释为正则表达式,将强制使用python解析       引擎并将忽略数据中的引号。正则表达式示例:'\ r \ t'

所以|需要使用\进行转义,否则会在正则表达式中解释为or个模式:

import pandas as pd
from io import StringIO

pd.read_csv(StringIO("""emp_num | Name | Salary
551234 | Joe | 5000
551234 | Dan | 5001
551234 | James | 5002
551234 | Li | 5003
551234 | Suzi | 5004"""), sep = " \| ")

enter image description here

答案 1 :(得分:1)

你可以像“.parse”一样使用

import pandas as pd
xls_file = pd.ExcelFile('file path')
df = xls_file.parse('Sheet1')

<强>输出:

   emp_num   Name   Salary
0   551234    Joe   5000
1   551234    Dan   5001
2   551234  James   5002
3   551234     Li   5003
4   551234   Suzi   5004

答案 2 :(得分:0)

您可以使用sep =&#34; |&#34;将其作为csv文件阅读。

或者您可以使用分隔符&#34; |&#34;将其读入Excel。所以它有多列。

read_excel没有sep参数。