Панды - продолжительность, в которой параметр равен & ldquo; 1 & rdquo;

Спасибо @gunar, но я думаю, что есть лучший способ.

Согласно doc:

 * If you are committing a single transaction that does not modify the
 * fragment back stack, strongly consider using
 * {@link FragmentTransaction#commitNow()} instead. This can help avoid
 * unwanted side effects when other code in your app has pending committed
 * transactions that expect different timing.
 *
 * @return Returns true if there were any pending transactions to be
 * executed.
 */
public abstract boolean executePendingTransactions();

Поэтому используйте commitNow для заменить:

fragmentTransaction.commit();
FragmentManager.executePendingTransactions()
2
задан cnila 28 February 2019 в 09:30
поделиться

1 ответ

Я полагаю, что вам нужно несколько значений столбцов 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 .

0
ответ дан jezrael 28 February 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: