2016-01-18 3 views
0

Я читаю ФР, который имеет 569 rows и 125 columns используя следующий код:Ошибка таблицы чтения панды

df = pd.read_csv('data', header = None, sep = '\s+') 

Выход df.info() является:

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 569 entries, 0 to 568 
Columns: 125 entries, 0 to 124 
dtypes: float64(123), int64(2) 
memory usage: 560.1 KB 

Выход df является:

0    1 2  3   4   5 
0  0 0.000000e+00 773 19.7205 25.944920 0.205061 
1  1 1.000000e+00 772 19.7205 25.944920 0.205061 
2  2 2.100000e+00 748 19.7205 25.944920 0.205061 
3  3 3.310000e+00 763 19.7205 25.944920 0.205061 
... 
568 568 1.010799e+10 697 19.7205 25.524932 0.199651 

Когда я пишу print df['X.1']ИЛИprint df['1'] Я получаю сообщение об ошибке:

KeyError: 'X.1' 

ИЛИ

KeyError: '1' 

Может кто-то пожалуйста, объясните мне, почему я получаю ошибку?

Спасибо!

+1

Проверьте колонки: 'df.columns.tolist() 'покажет вам, каковы ваши столбцы на самом деле – EdChum

ответ

2

IIUC вам необходимо позвонить df[1], потому что ваши столбцы являются целыми числами. Вы можете проверить его, указав df.columns с номером dtype. Если у вас есть что-то вроде этого вам нужно вызвать как целые числа:

In [214]: df.columns 
Out[214]: Int64Index([1, 2, 3, 4, 5], dtype='int64') 

In [215]: df[1] 
Out[215]: 
0 0.00 
1 1.00 
2 2.10 
3 3.31 
Name: 1, dtype: float64 

Если у вас есть имена столбцов, как str вам нужно позвонить df['1']:

In [216]: df.columns = map(str, range(1,6)) 

In [218]: df.columns 
Out[218]: Index(['1', '2', '3', '4', '5'], dtype='object') 

In [219]: df['1'] 
Out[219]: 
0 0.00 
1 1.00 
2 2.10 
3 3.31 
Name: 1, dtype: float64 
+0

Такая глупая ошибка! Спасибо @ Антон за подробности. – aloha

Смежные вопросы