python pandas read_excel:sep参数可用吗?

时间:2018-04-29 21:01:47

标签: python pandas

我尝试使用
将.xlsx读入pandas数据帧 pd.read_excel("C:/...")

问题是我只得到一个列,其中包含由","分隔的所有数据。

|---| "Country","Year","Export" |  
|---|---------------------------|  
| 0 | Canada,2017,3002          |  
| 1 | Bulgaria,2016,3960        |  
| 2 | Germany,2015,3818         |

但这不是我想要的格式......我想获得如下表所示的三列。

|---| "Country"    | "Year"   | "Export"   |  
|---|--------------|----------| -----------|  
|1  | Canada       | 2017     |       3002 |  
|2  | Bulgaria     | 2016     |       3960 |  
|3  | Germany      | 2015     |       3818 |

所以我正在寻找sep =','或分隔符=','参数包含在pd.read_csv中。我已经完成了pandas.read_excel的文档,但还没有找到一个处理这个问题的参数......

谢谢!

2 个答案:

答案 0 :(得分:2)

一种选择是将.xlsx保存为csv文件。如果在文本编辑器中打开它,您应该看到烦人的列保存在引号内,但是用逗号分隔的值如下:

"Country,Year,Export",...  
"Canada,2017,3002",...
"Bulgaria,2016,3960",...        
"Germany,2015,3818",... 

然后你可以用pd.read_csv()阅读这个文件,它会创建一个名为'Country,Year,Export'的列,看起来像

  Country,Year,Export
0    Canada,2017,3002
1  Bulgaria,2016,3960
2   Germany,2015,3818

然后,您可以使用str.split()

将其拆分为单独的列
df[['Country', 'Year', 'Export']] = pd.DataFrame(df['Country,Year,Export'].str.split(',').tolist())

  Country,Year,Export   Country  Year Export
0    Canada,2017,3002    Canada  2017   3002
1  Bulgaria,2016,3960  Bulgaria  2016   3960
2   Germany,2015,3818   Germany  2015   3818

答案 1 :(得分:0)

您的Excel文件可能将其所有数据包含在单个Excel列中,并以逗号分隔的字符串形式显示。 read_excel没有sep=参数,因为它旨在解析不使用用户可见字符划分列的Excel文件。

您可以修复Excel文件,也可以修复格式错误的DataFrame(名为df),如下所示:

df2 = df.iloc[:, 0].str.split(',', expand=True)
df2.columns = [n.replace('"', '') for n in df.columns.str.split(',')[0]]