【问题标题】:Multiplying boolean and string pandas series乘法布尔和字符串熊猫系列
【发布时间】:2019-08-11 15:24:27
【问题描述】:

我希望通过“相乘”来合并两个系列。一个系列是布尔值,一个是字符串。假设这是df:

df=
        a     b
    0   1     abc
    1   1     cde
    2   1     NaN
    3   0     a123
    4   0     b123
    5   0     NaN

我想要一个看起来像这样的系列 c:

      c
0    abc
1    cde
2    NaN
3    0
4    0
5    0 

我试过了

df['c']=df['a'].multiply(df['b'])

它没有工作。我得到了:

TypeError: 不能将序列乘以“float”类型的非整数

有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe multiplication


    【解决方案1】:

    试试mask

    df= pd.DataFrame({'a':[1,1,1,0,0,0], 'b':['abc', 'cde', 'NaN', 'a123','b123','NaN']})
    df['c'] = df['b'].mask(df['a']==0, 0)
    df
    

    输出:

        a    b     c
    0   1   abc   abc
    1   1   cde   cde
    2   1   NaN   NaN
    3   0   a123    0
    4   0   b123    0
    5   0   NaN     0
    

    【讨论】:

      【解决方案2】:

      我们可以使用where

      df.b.where(df.a.astype(bool),0)
      0    abc
      1    cde
      2    NaN
      3      0
      4      0
      5      0
      Name: b, dtype: object
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-22
        • 2019-01-14
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 2017-11-28
        相关资源
        最近更新 更多