2016-02-16 22 views
7

Sto cercando di aggiungere una colonna al mio DataFrame che è il prodotto della divisione di altre due colonne, in questo modo:panda python - dividendo colonna da un'altra colonna

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

Questo funziona bene, ma se il il valore in ['hours'] è inferiore a 1, quindi il valore ['$/hour'] è maggiore del valore in ['$'], che non è quello che voglio.

C'è un modo per controllare l'operazione in modo che se ['hours'] < 1 quindi df['$/hour'] = df['$']?

risposta

6

È possibile utilizzare 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 
+0

Questo è perfetto, grazie! – Charon

1
df['$/hour'] = df.apply(lambda x: x['$'] if x['$'] < 1 else x['$']/x['hours'], axis=1) 
3

È inoltre possibile filtrare e selezionare gli indici per impostare con DataFrame.loc:

df['$/hour'].loc[df['hours']>=1] = df['$']/df['hours'] 
df['$/hour'].loc[df['hours']<1] = df['$'] 
Problemi correlati