python pandas read_excel: параметр sep доступен? - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь прочитать .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 = ',' or delimiter = ',', содержащийся в pd.read_csv. Я уже работал с документацией pandas.read_excel, но не нашел параметра, который справился бы с этой проблемой ...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Ваш файл 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]]
0 голосов
/ 30 апреля 2018

Один из вариантов - сохранить .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...