В Windows с использованием Win32 API Структура SYSTEMTIME даст вам миллисекунды. Затем вы должны использовать Time Functions , чтобы получить время. Например:
#include
int main()
{
SYSTEMTIME stime;
//structure to store system time (in usual time format)
FILETIME ltime;
//structure to store local time (local time in 64 bits)
FILETIME ftTimeStamp;
char TimeStamp[256];//to store TimeStamp information
GetSystemTimeAsFileTime(&ftTimeStamp); //Gets the current system time
FileTimeToLocalFileTime (&ftTimeStamp,<ime);//convert in local time and store in ltime
FileTimeToSystemTime(<ime,&stime);//convert in system time and store in stime
sprintf(TimeStamp, "%d:%d:%d:%d, %d.%d.%d",stime.wHour,stime.wMinute,stime.wSecond,
stime.wMilliseconds, stime.wDay,stime.wMonth,stime.wYear);
printf(TimeStamp);
return 0;
}
Таким же образом вы получили maxdata
и mindata
, вы можете получить nth
минимумов и максимумов, выполнив:
df.sort_values(['id1','id2','c1']).groupby(['id1','id2']).c1.nth(1)
id1 id2
1 a1 6
2 b1 23
Name: c1, dtype: int64
Так что в этом случае вы получите второй минимум. для c1
Где df.sort_values(['id1','id2','c1'])
будет сортировать значения по id1
, id2
и c1
соответственно, что эквивалентно группированию по id1
и id2
и сортировке c1
: [ 1114]
id1 id2 c1 c2
0 1 a1 5 3
1 1 a1 6 2
2 1 a1 9 4
5 1 a1 34 32
3 2 b1 5 2
4 2 b1 23 43
6 3 3a 234 435
Давайте попробуем это:
smax = lambda x: x[x.rank(ascending = False) == 2]
smax.__name__ = 'secondMax'
tmax = lambda x: x[x.rank(ascending = False) == 3]
tmax.__name__ = 'thirdMax'
df_out = df.groupby(['id1','id2']).agg(['max','min',smax, tmax])
df_out.columns = [f'{i}_{j}' for i,j in df_out.columns]
df_out = df.merge(df_out, on=['id1','id2'])
df_out = df_out.where(df_out.astype(bool))
df_out
Вывод:
id1 id2 c1 c2 c1_max c1_min c1_secondMax c1_thirdMax c2_max c2_min c2_secondMax c2_thirdMax
0 1 a1 5 3 34 5 9 6 32 2 4 3
1 1 a1 6 2 34 5 9 6 32 2 4 3
2 1 a1 9 4 34 5 9 6 32 2 4 3
3 1 a1 34 32 34 5 9 6 32 2 4 3
4 2 b1 5 2 23 5 5 NaN 43 2 2 NaN
5 2 b1 23 43 23 5 5 NaN 43 2 2 NaN
6 3 3a 234 435 234 234 NaN NaN 435 435 NaN NaN