Wpis z mikrobloga

Czy jest tu ktoś, znający bibliotekę #pandas? Mam następujący problem. Mam plik csv, który sobie wczytuję do DataFrame'a. W tym df'ie mam kolumnę z datą w formacie takim: 2006-12-28 01:00:00. Chcę zliczyć wszystkie rekordy według samej godziny, żeby zrobić wykres częstości danego zjawiska w ciągu doby. Groupby wprost tu nie zadziała, muszę pierw to rozbić. Da się to jakoś szybko zrobić, czy pierwsze muszę csv doprowadzić do stanu, w którym mam to rozbite?
#python #naukaprogramowania
  • 10
  • Odpowiedz
Data to index tabeli? Parsujesz daty do obiektu, czy sa jako stringi?

Zrobmy to na moim przykladzie.

time.csv:

2006-12-28 01:00:00,1,2,3,4,5
2006-12-28 01:00:00,1,2,3,4,5
2006-12-28 01:00:00,1,2,3,4,5
2006-12-28 03:00:00,1,2,3,4,5
2006-12-28 03:00:00,1,2,3,4,5
2006-12-28 03:00:00,1,2,3,4,5
2006-12-28 04:00:00,1,2,3,4,5
2006-12-28 05:00:00,1,2,3,4,5
2006-12-28 05:00:00,1,2,3,4,5
2006-12-28 05:00:00,1,2,3,4,5
2006-12-28 05:00:00,1,2,3,4,5

**df = pd.readcsv('time.csv', parsedates=[0], names=['time', 'col1', 'col2', 'col3', 'col4', 'col5'])

Co nam da to:

In [69]: df

Out[69]:

time col1 col2 col3 col4 col5

0 2006-12-28 01:00:00 1 2 3
  • Odpowiedz
@biwalencik: Mój df wygląda tak:

station datetime visibility cloudiness
0 12100 2000-01-09 14:00:00 900.0 8.0
1 12100 2000-01-09 15:00:00 900.0 8.0
2 12100 2000-01-16 06:00:00 900.0 8.0

dtypes:

station object
datetime object
visibility float64
cloudiness float64

Po:

df['hour'] = df.time.apply(lambda x: x.hour)


zwraca mi, że 'str' nie ma atrybutu 'hour'.

Rozumiem, ze muszę zamienić pierwsze dtype 'datetime' na datę?
  • Odpowiedz