2017-02-19 13 views
5

Mam ogromne DataFrame, gdzie kolumny nie są nigdy w porządku i nie znam ich nazwy.Uzyskaj wszystkie kolumny z datetime za pomocą pand?

Co zrobić, aby znaleźć wszystkie kolumny typu datetime?

Większość rozwiązań online, plakat zna nazwę kolumny, więc mam trochę problemów, ponieważ nie mam. Co mogę zrobić w tej sytuacji?

+0

Co _else_ zrobić kolumny mają? Inne rodzaje? 'NaN'? Czy możesz dodać kilka przykładowych danych? – miradulo

+0

Mam ponad 100 kolumn, niektóre kolumny są tylko ints, niektóre są boolean, niektóre są alfanumeryczne. Kolumna datetime nie ma NaN. (Jest ich tylko 2, chcę tylko kogoś z nich). Załóżmy, że nie ma NaN. Nie znalazłem żadnego w próbie ponad 10 zestawów danych. –

Odpowiedz

7

Można użyć pandas.DataFrame.select_dtypes() i uwzględnić tylko typ datetime64.

df.select_dtypes(include=['datetime64']) 

Demo

>>> df 
     dts1  dts2 ints 
0 2012-01-01 2004-01-01  0 
1 2012-01-02 2004-01-02  1 
2 2012-01-03 2004-01-03  2 
..  ...  ... ... 
97 2012-04-07 2004-04-07 97 
98 2012-04-08 2004-04-08 98 
99 2012-04-09 2004-04-09 99 

>>> df.select_dtypes(include=['datetime64']) 
     dts1  dts2 
0 2012-01-01 2004-01-01 
1 2012-01-02 2004-01-02 
2 2012-01-03 2004-01-03 
..  ...  ... 
97 2012-04-07 2004-04-07 
98 2012-04-08 2004-04-08 
99 2012-04-09 2004-04-09 
0

Od każdej kolumnie DataFrame pandy to seria pandy po prostu iterację listy nazw kolumn i warunkowo sprawdzić series.dtype DateTime (zazwyczaj datetime64 [ns]):

for col in df.columns: 
    if df[col].dtype == 'datetime64[ns]': 
     print(col) 

Albo jako zrozumienie listy:

[col for col in df.columns if df[col].dtype == 'datetime64[ns]'] 

Albo jako filtr serii:

df.dtypes[df.dtypes=='datetime64[ns]'] 
Powiązane problemy