Где найти внутренний код для Android-плеера (выборка данных, декодирование и отображение)?

Вы можете использовать np.where . Если cond является булевым массивом, а A и B являются массивами, тогда

C = np.where(cond, A, B)

определяет C равным A, где cond имеет значение True, а B, где cond - False.

import numpy as np
import pandas as pd

a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])

df['que'] = np.where((df['one'] >= df['two']) & (df['one'] <= df['three'])
                     , df['one'], np.nan)

дает

  one  two three  que
0  10  1.2   4.2   10
1  15   70  0.03  NaN
2   8    5     0  NaN

Если у вас более одного условия, вы можете использовать np.select . Например, если вы хотите df['que'] равняться df['two'], когда df['one'] < df['two'], то

conditions = [
    (df['one'] >= df['two']) & (df['one'] <= df['three']), 
    df['one'] < df['two']]

choices = [df['one'], df['two']]

df['que'] = np.select(conditions, choices, default=np.nan)

дает

  one  two three  que
0  10  1.2   4.2   10
1  15   70  0.03   70
2   8    5     0  NaN

Если мы можем предположить, что df['one'] >= df['two'], когда df['one'] < df['two'] является False, тогда условия и варианты могут быть упрощены до

conditions = [
    df['one'] < df['two'],
    df['one'] <= df['three']]

choices = [df['two'], df['one']]

(Предположение может быть неверным, если df['one'] или df['two'] содержат NaNs.)


Обратите внимание, что

a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])

определяет DataFrame со строковыми значениями. Поскольку они выглядят как числовые, вам может быть лучше преобразовать эти строки в float:

df2 = df.astype(float)

Это изменяет результаты, однако, поскольку строки сравниваются по каждому символу, а численные значения поплавков - численно.

In [61]: '10' <= '4.2'
Out[61]: True

In [62]: 10 <= 4.2
Out[62]: False

0
задан SandeepGurram 27 March 2019 в 06:21
поделиться