別の列の特定の文字列と一致するかどうかに応じて、特定の値のみを計算して新しい列を作成しようとしています。例えば、
df1 = pd.DataFrame({'currency': ['USD', 'PKR', 'PKR', 'USD'], 'amount': [1000, 34000, 40000, 560]})
同じPKR値が必要な新しい列を作成したいのですが、USD値に150を掛けたいと思います。
これが私が欲しいものです、
total = [150000, 34000, 40000, 84000]
df1['total'] = total
ここでは、USD値を手動で乗算しました。合計列を取得することに興味があります。
numpy.where
条件による設定値に使用します。
df1['total'] = np.where(df1['currency'] == 'USD', df1['amount'] * 150, df1['amount'])
print (df1)
currency amount total
0 USD 1000 150000
1 PKR 34000 34000
2 PKR 40000 40000
3 USD 560 84000
特にcurrency
列ごとに複数の値が必要な場合はSeries.map
、辞書を作成し、一致しない値1
を最後の複数の列に置き換えて使用します。
df1['total'] = df1['currency'].map({'USD':150}).fillna(1).mul(df1['amount'])
例えばによって、複数必要な場合PKR
と20
:
df1['total'] = df1['currency'].map({'USD':150, 'PKR':20}).fillna(1).mul(df1['amount'])
print (df1)
currency amount total
0 USD 1000 150000
1 PKR 34000 680000
2 PKR 40000 800000
3 USD 560 84000
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加