Python pandas-Division colonne par une autre colonne

j'essaie d'ajouter une colonne à mon DataFrame qui est le produit de la division de deux autres colonnes, comme suit:

df['$/hour'] = df['$']/df['hours']

Cela fonctionne bien, mais si la valeur de ['hours']1, puis ['$/hour'] la valeur est supérieure à la valeur dans ['$'], qui n'est pas ce que je veux.

Existe-t-il un moyen de contrôler l'opération de sorte que si ['hours'] < 1<!--7?

10
demandé sur Charon 2016-02-16 20:48:56

3 réponses

Vous pouvez utiliser numpy.where:

print df
    hours  $
0       0  8
1       0  9
2       0  9
3       3  6
4       6  4
5       3  7
6       5  5
7      10  1
8       9  3
9       3  6
10      5  4
11      5  7

df['$/hour'] = np.where(df['hours'] < 1, df['hours'], df['$']/df['hours'])
print df
    hours  $    $/hour
0       0  8  0.000000
1       0  9  0.000000
2       0  9  0.000000
3       3  6  2.000000
4       6  4  0.666667
5       3  7  2.333333
6       5  5  1.000000
7      10  1  0.100000
8       9  3  0.333333
9       3  6  2.000000
10      5  4  0.800000
11      5  7  1.400000
6
répondu jezrael 2016-02-16 17:55:09

Vous pouvez également filtrer et sélectionner les indices pour définir avec DataFrame.loc:

df['$/hour'].loc[df['hours']>=1] = df['$']/df['hours']
df['$/hour'].loc[df['hours']<1] = df['$']
3
répondu agold 2016-02-16 17:55:20
df['$/hour'] = df.apply(lambda x: x['$'] if x['$'] < 1 else x['$']/x['hours'], axis=1)
2
répondu Brian Huey 2016-02-16 17:53:22