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