2016-02-16 5 views
7

のpythonパンダ - 他の列ごとに分割し、私は他の2つの列の部門の製品ですので、のような私<code>DataFrame</code>に列を追加しようとしている

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['$'] 
関連する問題