Staram się zachować tylko niektóre kolumny w DataFrame, i to działa dobrze, gdy nazwy kolumn są ciągi:pandy Index DataFrame numerami kolumn, gdy nazwy kolumn są liczbami całkowitymi
In [2]: import numpy as np
In [3]: import pandas as pd
In [4]: a = np.arange(35).reshape(5,7)
In [5]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
In [6]: df
Out[6]:
a b c d e f g
x 0 1 2 3 4 5 6
y 7 8 9 10 11 12 13
u 14 15 16 17 18 19 20
z 21 22 23 24 25 26 27
w 28 29 30 31 32 33 34
[5 rows x 7 columns]
In [7]: df[[1,3]] #No problem
Out[7]:
b d
x 1 3
y 8 10
u 15 17
z 22 24
w 29 31
Jednak, gdy nazwy kolumn są całkowitymi, jestem coraz kluczową błąd:
In [8]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], range(10, 17))
In [9]: df
Out[9]:
10 11 12 13 14 15 16
x 0 1 2 3 4 5 6
y 7 8 9 10 11 12 13
u 14 15 16 17 18 19 20
z 21 22 23 24 25 26 27
w 28 29 30 31 32 33 34
[5 rows x 7 columns]
In [10]: df[[1,3]]
wyniki w:
KeyError: '[1 3] not in index'
widzę dlaczego pan das nie pozwala na to -> w celu uniknięcia pomieszania między indeksowaniem według nazw kolumn i numerów kolumn. Czy jest jednak jakiś sposób, aby powiedzieć pandom, że chcę indeksować według numerów kolumn? Oczywiście jednym z rozwiązań jest zamiana nazw kolumn na łańcuchy, ale zastanawiam się, czy istnieje lepsze rozwiązanie.