代码之家  ›  专栏  ›  技术社区  ›  somnathchakrabarti

在python数据帧上应用lambda

  •  1
  • somnathchakrabarti  · 技术社区  · 6 年前

    我有一个类似python pandas的数据框架

    >>> df
      classification like 
    0         flower    1 
    1         flower    0 
    2         flower    0 
    3      adventure    1 
    4      adventure    1 
    

    我想创建一个输出数据帧

    >>> df
      classification like  liked
    0         flower    1  True
    1         flower    0  False
    2         flower    0  False
    3      adventure    1  True
    4      adventure    1  True
    

    我将在输入数据帧上“应用”python lambda函数,如下所示:

    >>> df['like'].apply(lambda x: x == 1)
    

    但是我在“喜欢”栏下得到了所有的“错误”

    >>> df
      classification like  liked
    0         flower    1  False
    1         flower    0  False
    2         flower    0  False
    3      adventure    1  False
    4      adventure    1  False
    

    任何快速的建议都会有帮助。

    >>> df['like'].astype(int)
    0    1
    1    0
    2    0
    3    1
    4    1
    Name: like, dtype: int32
    

    @耶斯拉利

    >>> df['liked'] = df['like'].astype(bool)
    >>> df
      classification like  liked
    0         flower    1   True
    1         flower    0   True
    2         flower    0   True
    3      adventure    1   True
    4      adventure    1   True
    

    @Jezrael:数据类型

    >>> df.dtypes
    classification    object
    like              object
    liked               bool
    dtype: object
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   jezrael    6 年前

    将整列转换为布尔值:

    print (type(df.loc[0, 'like']))
    <class 'numpy.int64'>
    
    df['liked'] = df['like'].astype(bool)
    

    或指定与1的比较:

    df['liked'] = df['like'] == 1
    

    如果 1 是字符串比较字符串 '1' 以下内容:

    print (type(df.loc[0, 'like']))
    <class 'str'>
    
    df['liked'] = df['like'] == '1'
    print (df)
      classification like  liked
    0         flower    1   True
    1         flower    0  False
    2         flower    0  False
    3      adventure    1   True
    4      adventure    1   True