Python pandas не читает первый столбец из файла csv
У меня есть простой файл csv с двумя столбцами, называемый st1.csv:
GRID St1
1457 614
1458 657
1459 679
1460 732
1461 754
1462 811
1463 748
Однако, когда я пытаюсь прочитать файл csv, первый столбец не загружается:
a = pandas.DataFrame.from_csv('st1.csv')
a.columns
<сильные > выходы:
Index([u'ST1'], dtype=object)
Почему первый столбец не читается?
Ответы
Ответ 1
Судя по вашим данным, похоже, что разделитель, который вы используете, - это
.
Попробуйте следующее:
a = pandas.DataFrame.from_csv('st1.csv', sep=' ')
Другая проблема заключается в том, что предполагается, что ваш первый столбец является индексом, который мы также можем отключить:
a = pandas.DataFrame.from_csv('st1.csv', index_col=None)
Ответ 2
На основании документации, в которой сравниваются read_csv
и from_csv
, показано, что можно поставить index_col = None
. Я попробовал ниже, и это сработало:
DataFrame.from_csv('st1.csv', index_col=None);
Это предполагает, что данные разделены запятыми.
Пожалуйста, проверьте ссылку ниже
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_csv.html
Ответ 3
Для более новых версий панд pd.DataFrame.from_csv
больше не существует, и index_col=None
больше не работает с pd.read_csv
. Вместо этого вы захотите использовать pd.read_csv
с index_col=False
:
pd.read_csv('st1.csv', index_col=False)
Пример:
(so) URSA-MattM-MacBook:stackoverflow mmessersmith$ cat input.csv
Date Employee Operation Order
2001-01-01 08:32:17 User1 Approved #00045
2001-01-01 08:36:23 User1 Edited #00045
2001-01-01 08:41:04 User1 Rejected #00046
2001-01-01 08:42:56 User1 Deleted #00046
2001-01-02 09:01:11 User1 Created #00047
2019-10-03 17:23:45 User1 Approved #72681
(so) URSA-MattM-MacBook:stackoverflow mmessersmith$ python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> pd.__version__
'0.25.1'
>>> df_bad_index = pd.read_csv('input.csv', delim_whitespace=True)
>>> df_bad_index
Date Employee Operation Order
2001-01-01 08:32:17 User1 Approved #00045
2001-01-01 08:36:23 User1 Edited #00045
2001-01-01 08:41:04 User1 Rejected #00046
2001-01-01 08:42:56 User1 Deleted #00046
2001-01-02 09:01:11 User1 Created #00047
2019-10-03 17:23:45 User1 Approved #72681
>>> df_bad_index.index
Index(['2001-01-01', '2001-01-01', '2001-01-01', '2001-01-01', '2001-01-02',
'2019-10-03'],
dtype='object')
>>> df_still_bad_index = pd.read_csv('input.csv', delim_whitespace=True, index_col=None)
>>> df_still_bad_index
Date Employee Operation Order
2001-01-01 08:32:17 User1 Approved #00045
2001-01-01 08:36:23 User1 Edited #00045
2001-01-01 08:41:04 User1 Rejected #00046
2001-01-01 08:42:56 User1 Deleted #00046
2001-01-02 09:01:11 User1 Created #00047
2019-10-03 17:23:45 User1 Approved #72681
>>> df_still_bad_index.index
Index(['2001-01-01', '2001-01-01', '2001-01-01', '2001-01-01', '2001-01-02',
'2019-10-03'],
dtype='object')
>>> df_good_index = pd.read_csv('input.csv', delim_whitespace=True, index_col=False)
>>> df_good_index
Date Employee Operation Order
0 2001-01-01 08:32:17 User1 Approved
1 2001-01-01 08:36:23 User1 Edited
2 2001-01-01 08:41:04 User1 Rejected
3 2001-01-01 08:42:56 User1 Deleted
4 2001-01-02 09:01:11 User1 Created
5 2019-10-03 17:23:45 User1 Approved
>>> df_good_index.index
RangeIndex(start=0, stop=6, step=1)