Sto provando a ricampionare un frame di dati panda con un indice di data/ora a un evento orario. Sono interessato ad ottenere il valore più frequente per una colonna con valori stringa. Tuttavia, le funzioni incorporate del ricampionamento delle serie temporali non includono la modalità come uno dei metodi predefiniti per ricampionare (come "significa" e "conta").
Ho cercato di definire la mia funzione e di passare quella funzione ma non funziona. Ho anche provato a utilizzare la funzione np.bincount
ma non funziona poiché sto lavorando con le stringhe.Come ottenere la modalità per variabile stringa durante il ricampionamento con i panda
Ecco come miei dati appare:
station_arrived action lat1 lon1
date_removed
2012-01-01 13:12:00 56 A 19.4171 -99.16561
2012-01-01 13:12:00 56 A 19.4271 -99.16361
2012-01-01 15:41:00 56 A 19.4171 -99.16561
2012-01-02 08:41:00 56 C 19.4271 -99.16561
2012-01-02 11:36:00 56 C 19.2171 -99.16561
Questo è il mio codice finora:
def mode1(algo):
common=[ite for ite, it in Counter(algo).most_common(1)]
# Returns all unique items and their counts
return common
hourlycount2 = travels2012.resample('H', how={'station_arrived': 'count',
'action': mode(travels2012['action']),
'lat1':'count', 'lon1':'count'})
hourlycount2.head()
vedo il seguente errore:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\generic.py", line 2836, in resample
return sampler.resample(self).__finalize__(self)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\tseries\resample.py", line 83, in resample
rs = self._resample_timestamps()
File "C:\Program Files\Anaconda\lib\site-packages\pandas\tseries\resample.py", line 277, in _resample_timestamps
result = grouped.aggregate(self._agg_method)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2404, in aggregate
result[col] = colg.aggregate(agg_how)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2076, in aggregate
ret = self._aggregate_multiple_funcs(func_or_funcs)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2125, in _aggregate_multiple_funcs
results[name] = self.aggregate(func)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2073, in aggregate
return getattr(self, func_or_funcs)(*args, **kwargs)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 486, in __getattr__
(type(self).__name__, attr))
AttributeError: 'SeriesGroupBy' object has no attribute 'A '
Grazie la seconda opzione, utilizzando la funzione definita per calcolare la modalità per ogni gruppo, è proprio quello che stavo cercando. È divertente, ho provato una soluzione simile prima ma per qualche motivo non ha funzionato. – asado23