【问题标题】:multiply list of row with one column by condition (DATA FRAME)将行列表与一列乘以条件(数据帧)
【发布时间】:2020-08-20 14:24:40
【问题描述】:

我想用一个列乘以列列表,所以我有列列表 = cols,但我只想乘以 name=="A" .with 列“multi”

data={"col1":[2,3,4,5],
"col2":[4,2,4,6],
"col3":[7,6,9,11],
"col4":[14,11,22,8],
"name":["A","A","V","A"],
"multi":[1.4,2.5,1.6,2.2]}
df=pd.DataFrame.from_dict(data)
cols=list(df.columns)
for x in ["multi","name","col4"]:
    cols.remove(x)
df

类似的东西

df[cols]=df.loc[df["name"]=="A"]*df["multi"]

【问题讨论】:

    标签: python pandas conditional-statements multiplication


    【解决方案1】:

    试试这个

    df.loc[df.name=='A', cols] = df[df.name=='A'].apply(lambda r:r[cols]*r['multi'], axis=1)
    

    【讨论】:

      【解决方案2】:

      让我们做

      m = ~df.columns.isin(["multi","name","col4"])
      df.loc[df.name=='A', m] = (df.loc[df.name=='A', m].mul(df.multi, axis=0))
      df
      Out[94]: 
         col1  col2  col3  col4 name  multi
      0   2.8   5.6   9.8    14    A    1.4
      1   7.5   5.0  15.0    11    A    2.5
      2   4.0   4.0   9.0    22    V    1.6
      3  11.0  13.2  24.2     8    A    2.2
      

      【讨论】:

        猜你喜欢
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-03
        • 1970-01-01
        • 2020-05-22
        相关资源
        最近更新 更多