2016-12-13 11 views
6

tj .:W ramce danych Pandas DataFrame, jaka jest różnica między nawiasami kwadratowymi a kropką do "cal a column"?

import pandas 

d = {'col1': 2, 'col2': 2.5} 
df = pandas.DataFrame(data=d, index=[0]) 

print(df['col2']) 
print(df.col2) 

wyjście jest takie samo.

Czy ta odpowiedź dotyczy tej sprawy?

What's the difference between the square bracket and dot notations in Python?

+0

Ten link nie dotyczy pand. Nie jestem do końca pewien, ale mam 90% pewności, że te dwie notacje są dokładnie takie same w pandach. –

+0

O ile w nazwie kolumny nie ma spacji lub innych znaków alfanumerycznych (tak, to jest dozwolone). Jeśli tak, pozostaje tylko notacja z nawiasem kwadratowym. –

Odpowiedz

7

W "kropka notacja", tj df.col2 jest attribute access który jest wystawiony jako udogodnienie.

może uzyskać dostęp do indeksu na serialu kolumnę na DataFrame, a pozycja na płycie bezpośrednio jako atrybut:

df['col2'] robi to samo: to zwraca pd.Series kolumny.

Kilka ostrzeżenia o dostępie atrybut:

  • nie można dodać kolumny (df.new_col = x nie będzie działać, gorsze: to będzie cicho faktycznie utworzyć nowy atrybut zamiast kolumny - pomyśl małpa-łatanie tutaj)
  • to nie zadziała, jeśli masz spacje w nazwie kolumny lub jeśli nazwa kolumny jest liczbą całkowitą.
6

Są one takie same, jak długo masz dostęp do pojedynczej kolumny z prostą nazwą, ale możesz zrobić więcej dzięki notacji nawiasów. Można użyć tylko nazwy df.col, jeśli nazwa kolumny jest poprawnym identyfikatorem w języku Python (np. Nie zawiera spacji i innych podobnych elementów). Możesz również napotkać na niespodzianki, jeśli twoja nazwa kolumny koliduje z nazwą metody pandy (np. sum). W nawiasach można wybrać wiele kolumn (np. df[['col1', 'col2']]) lub dodać nową kolumnę (df['newcol'] = ...), której nie można uzyskać za pomocą dostępu kropkowanego.

Inne powiązane pytanie dotyczy, ale jest to o wiele bardziej ogólne pytanie. Obiekty Pythona określają sposób, w jaki operatory te mają do nich zastosowanie. Pandas DataFrames zdecydowało, aby były takie same dla tego ograniczonego przypadku dostępu do pojedynczych kolumn, z zastrzeżeniami opisanymi powyżej.