我有兩個 DataFrame和df1兩個df2陣列mul1mul2
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'A': [100, 200], 'B': [50, 150], 'C': [40, 120]})
# A B C
# 0 100 50 40
# 1 200 150 120
df2 = pd.DataFrame({'A': [5, 1], 'B': [3, 25], 'C': [10, 11]})
# A B C
# 0 5 3 10
# 1 1 25 11
mul1 = np.array([.1, .2, .3])
mul2 = np.array([1.1, 1.2, 1.3])
我想使用類似pd.mul或np.multiply乘以df1元素中的任何一個mul1或mul2取決于它們在df2.
對于 A 列,df1需要乘以mul1[0]if df2['A'] > 3,否則需要乘以mul2[0]。
對于 B 和 C 列,相應的標準是df2['B'] > 12和df2['C'] > 15。
所以正確的輸出是:
A B C
0 10 60 52
1 220 30 156
有沒有人有這樣做的好方法?
uj5u.com熱心網友回復:
使用 np.where,我們可以在第一個引數中指定一個條件,在第二個和第三個引數中指定我們想要的操作:
df1['A'] = np.where(df2['A'] > 3, df1['A'] * mul1[0], df1['A'] * mul2[0])
df1['B'] = np.where(df2['B'] > 12, df1['B'] * mul1[1], df1['B'] * mul2[1])
df1['C'] = np.where(df2['C'] > 15, df1['C'] * mul1[2], df1['C'] * mul2[2])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516044.html
上一篇:用max收縮numpy陣列
