2012-10-26 10 views
15

Jestem początkujący w bibliotece Python i Pandas i jestem raczej zdezorientowany przez jakąś podstawową funkcjonalność DataFrame. Mam DataFrame jak poniżej pandy:df.head() czasami nie działa w Pandach, Python

>>>df.head() 
       X Y  unixtime 
0 652f5e69fcb3 1 1346689910622 
1  400292 1 1346614723542 
2 1c9d02e4f14e 1 1346862070161 
3  610449 1 1346806384518 
4  207664 1 1346723370096 

Jednak po tym, jak przeprowadzić jakąś funkcję:

def unixTodate(unix): 
    day = dt.datetime.utcfromtimestamp(unix/1000).strftime('%Y-%m-%d') 
    return day 

df['day'] = df['unixtime'].apply(unixTodate) 

Nie mogłem dłużej skorzystania z funkcji df.head():

>>>df.head() 

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 190648 to 626582 
Data columns: 
X    5 non-null values 
Y    5 non-null values 
unixtime  5 non-null values 
day   5 non-null values 
dtypes: int64(3), object(5) 

Nie rozumiem, dlaczego tak się dzieje. Czy robię coś złego tutaj? Każdy wskaźnik jest mile widziany! Dzięki.

Odpowiedz

16

df.head(n) zwraca DataFrame trzymając pierwsze n wierszy df. Teraz, aby wyświetlić pandy DataFrame sprawdza domyślnie szerokość terminala, jeśli jest zbyt mała, aby wyświetlić DataFrame, zostanie wyświetlony widok podsumowania. To właśnie dostajesz w drugim przypadku.

Czy możesz zwiększyć rozmiar terminala lub wyłączyć automatyczne wykrywanie na kolumnach przez pd.set_printoptions(max_columns=10)?

+0

Dzięki Wouter - teraz działa. Ale moja druga ramka danych jest w rzeczywistości o jedną kolumnę szerszą niż moja pierwsza, więc jestem nieco zaskoczona, że ​​nie można jej wyświetlić. Czy jest jakaś dokumentacja, którą możesz wskazać mi? –

+0

nie ma zbyt wiele ... http://pandas.pydata.org/pandas-docs/stable/basics.html#console-output-formatowanie –

+0

btw co można uzyskać za pd.util.terminal.get_terminal_size()? Powinno to być (terminal_width, terminal_height). Jeśli pandy nie mogą go automatycznie wykryć (80, 25) jest domyślnie zwracana. –