選項1
使用,以便乘以提供axis
參數指定所需的系列中,您都乘以成爲pd.DataFrame.mul
方法沿指數排列。
df2.mul(df1.Eminem, axis=0)
HI BYBY OKDO SOME COOL INT
Date
2011-01-10 511485.0 215115.0 921315.0 108030.0 184785.0 1500.0
2011-01-13 516300.0 216825.0 925035.0 110310.0 186810.0 1500.0
2011-01-13 1376800.0 578200.0 2466760.0 294160.0 498160.0 4000.0
2011-01-26 342380.0 156420.0 616500.0 76370.0 125800.0 1000.0
選項2
如果機緣巧合,在您要乘以該系列的方式已經下令要繁衍,你可以放棄索引和訪問values
屬性。
df2.mul(df1.Eminem.values, 0)
HI BYBY OKDO SOME COOL INT
Date
2011-01-10 511485.0 215115.0 921315.0 108030.0 184785.0 1500.0
2011-01-13 516300.0 216825.0 925035.0 110310.0 186810.0 1500.0
2011-01-13 1376800.0 578200.0 2466760.0 294160.0 498160.0 4000.0
2011-01-26 342380.0 156420.0 616500.0 76370.0 125800.0 1000.0
選項3
如果指數證明困難的,可以追加一個水平,使得它獨特的
unique_me = lambda d: d.set_index(d.groupby(level=0).cumcount(), append=True)
df2.pipe(unique_me).mul(df1.pipe(unique_me).Eminem, axis=0).reset_index(-1, drop=True)
HI BYBY OKDO SOME COOL INT
Date
2011-01-10 511485.0 215115.0 921315.0 108030.0 184785.0 1500.0
2011-01-13 516300.0 216825.0 925035.0 110310.0 186810.0 1500.0
2011-01-13 1376800.0 578200.0 2466760.0 294160.0 498160.0 4000.0
2011-01-26 342380.0 156420.0 616500.0 76370.0 125800.0 1000.0
搭配修身因子
df2.drop('INT', axis=1, errors='ignore').mul(df1.Eminem.values, 0).assign(
INT=lambda d: (lambda s: s.mask(df1.Slim.eq('No'), -s))(d.sum(1)))
HI BYBY OKDO SOME COOL INT
Date
2011-01-10 511485.0 215115.0 921315.0 108030.0 184785.0 1940730.0
2011-01-13 516300.0 216825.0 925035.0 110310.0 186810.0 -1955280.0
2011-01-13 1376800.0 578200.0 2466760.0 294160.0 498160.0 5214080.0
2011-01-26 342380.0 156420.0 616500.0 76370.0 125800.0 1317470.0
最後一件事是'Slim'因素。 – dirtysocks45
除了'INT',數字都是正確的。對於int,如果它是'NO',我想要該行中其他元素的和的否定。否則,我希望它是行的正面總和。 – dirtysocks45
我舉了一個我需要的例子。 – dirtysocks45