Я полагаю, что вам нужно несколько значений столбцов par
по разности даты и времени, поскольку в данных не существует других значений, таких как 0
, 1
и NaN
:
d = df['timestamp'].diff()
df1 = df.filter(like='par')
#if need duration by some value e.g. by `0`
#df1 = df.filter(like='par').eq(0).astype(int)
s = df1.mul(d, axis=0).sum().astype(int).add_prefix('duration_')
df = df.assign(**s)
print (df)
timestamp par_1 par_2 duration_par_1 duration_par_2
0 1486873206867 0.0 0.0 1110 487
1 1486873207039 NaN 0.0 1110 487
2 1486873207185 0.0 NaN 1110 487
3 1486873207506 1.0 0.0 1110 487
4 1486873207518 NaN NaN 1110 487
5 1486873207831 1.0 0.0 1110 487
6 1486873208148 0.0 NaN 1110 487
7 1486873208469 0.0 1.0 1110 487
8 1486873208479 1.0 NaN 1110 487
9 1486873208793 1.0 NaN 1110 487
10 1486873208959 NaN 1.0 1110 487
11 1486873209111 1.0 NaN 1110 487
12 1486873209918 NaN 0.0 1110 487
13 1486873210075 0.0 NaN 1110 487
] Объяснение :
Сначала получить разность столбца timestamp
:
print (df['timestamp'].diff())
0 NaN
1 172.0
2 146.0
3 321.0
4 12.0
5 313.0
6 317.0
7 321.0
8 10.0
9 314.0
10 166.0
11 152.0
12 807.0
13 157.0
Name: timestamp, dtype: float64
Выбрать все столбцы со строкой par
по filter
: [ 1126]
print (df.filter(like='par'))
par_1 par_2
0 0.0 0.0
1 NaN 0.0
2 0.0 NaN
3 1.0 0.0
4 NaN NaN
5 1.0 0.0
6 0.0 NaN
7 0.0 1.0
8 1.0 NaN
9 1.0 NaN
10 NaN 1.0
11 1.0 NaN
12 NaN 0.0
13 0.0 NaN
Несколько отфильтрованных столбцов по mul
по d
:
print (df1.mul(d, axis=0))
par_1 par_2
0 NaN NaN
1 0.0 0.0
2 0.0 0.0
3 321.0 0.0
4 0.0 0.0
5 313.0 0.0
6 0.0 0.0
7 0.0 321.0
8 10.0 0.0
9 314.0 0.0
10 0.0 166.0
11 152.0 0.0
12 0.0 0.0
13 0.0 0.0
И sum
значения:
print (df1.mul(d, axis=0).sum())
par_1 1110.0
par_2 487.0
dtype: float64
Преобразование в integer
с и изменение индекса на add_prefix
:
print (df1.mul(d, axis=0).sum().astype(int).add_prefix('duration_'))
duration_par_1 1110
duration_par_2 487
dtype: int32
Последнее создание новых столбцов с помощью assign
.
Для этого можно использовать "hg log".
hg log --verbose --rev=4:7 --style=changelog
Пример:
$ hg log -v -r4:7 --style=changelog
2008-08-03 21:40 +0200 XXXXX <XXXXXX.YYYY@xxxxxxxx.com> (475752c35880)
* osinfo.py: new file.
* os-info.py: deleted file.
* os-info.py, osinfo.py:
Rename os-info.py -> osinfo.py.
2008-08-03 21:52 +0200 XXXXXX <XXXXXX.YYYY@xxxxxxxx.com> (babf6df75ff4)
* iterate_file_lines.py, osinfo.py:
Add keyword substitution strings.
2008-08-03 21:53 +0200 XXXXXX <XXXXXX.YYYY@xxxxxxxx.com> (bc6fc22adb8e)
* iterate_file_lines.py:
Remove comment about coding conventions.
2008-08-08 19:43 +0200 XXXXXX <XXXXXX.YYYY@xxxxxxxx.com> (dbea6914b20f)
* .hgignore: new file.
* .hgignore:
Add .hgignore.