Если я правильно понимаю, вы хотите сгруппировать свои данные по 10 минут. Если ваш набор данных уже выбран, вы можете просто сгруппировать данные по минутам и перебрать итоговые кадры данных.
minutes_dfs = df.groupby(df.datetime.map(lambda t: t.minute))
Если выборка еще не выполнена, вы можете создать группы по 10 минут
minutes_dfs = a.groupby(pd.Grouper(freq='10Min'))
Полный код:
# Example Data Frame
data = {'TimeStamp':['31/10/2017 23:50:00', '31/10/2017 23:50:00', '31/10/2017 23:50:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00'],
'datetime':['31/10/2017 23:50:00', '31/10/2017 23:50:00', '31/10/2017 23:50:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00', '31/10/2017 23:40:00'],
'x':[1, 2, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9],
'y':[9, 8, 7, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'Sp_mean':[6.49, 5.63, 7.07, 7.86, 7.27, 6.59, 6.78, 8.35, 6.3, 5.82, 8.74, 8.94]}
df = pd.DataFrame(data)
df['TimeStamp'] = pd.to_datetime(df['TimeStamp'])
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime')
df['datetime'] = df.index
print(df)
#If data is already sampled
#minutes_dfs = df.groupby(df.datetime.map(lambda t: t.minute))
#Not sampled data
minutes_dfs = a.groupby(pd.Grouper(freq='10Min'))
for min, minutes in minutes_dfs:
t_text = str(min)
#get data into variable
ws = minutes['Sp_mean']
lat = minutes['x']
lon = minutes['y']
col = 0.75
#calc min/max for setting scale on images
min_ws = df['Sp_mean'].min()
max_ws = df['Sp_mean'].max()
plt.figure(figsize=(15,10))
plt.scatter(lon, lat, c=ws,s=300, vmin=min_ws, vmax=max_ws)
plt.title('event' + t_text,fontweight = 'bold',fontsize=18)
plt.show()