2016-02-16 31 views
7

मैं अपने DataFrame जो दो अन्य स्तंभों के विभाजन का उत्पाद है इसलिए की तरह करने के लिए एक स्तंभ जोड़ने के लिए कोशिश कर रहा हूँ:अजगर पांडा - एक और स्तंभ के आधार स्तंभ विभाजित

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

यह ठीक काम करता है, लेकिन अगर ['hours'] में मान 1 से कम है, तो ['$/hour'] मान ['$'] में मान से अधिक है, जो मैं नहीं चाहता हूं।

क्या ऑपरेशन को नियंत्रित करने का कोई तरीका है ताकि ['hours'] < 1 फिर df['$/hour'] = df['$']?

उत्तर

6

आप 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

यह एकदम सही है, धन्यवाद! – Charon

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

आप को फ़िल्टर और अनुक्रमित का चयन कर सकते DataFrame.loc साथ स्थापित करने के लिए:

df['$/hour'].loc[df['hours']>=1] = df['$']/df['hours'] 
df['$/hour'].loc[df['hours']<1] = df['$'] 
संबंधित मुद्दे