我尝试使用
将.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的文档,但还没有找到一个处理这个问题的参数......
谢谢!
答案 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]]