Python 可调用项选择

Python 可调用项选择,python,python-3.x,pandas,Python,Python 3.x,Pandas,编辑:原来我最初的问题只是一个版本问题。然而,在回答我最初的问题的过程中,还提出了一些其他问题,因此我重新编写了这些问题,并将它们列在下面: 我正在熟悉熊猫的一些能力,即。文件建议使用lambda函数,例如,提取特征“A”值大于0的数据帧df1中的所有样本: df1.loc[lambda df: df.A > 0, :] 有没有一种更紧凑、更像蟒蛇的方法 假设df1现在是一个具有特性a的数据帧,但是值是混合的双元组和三元组(2元组和3元组)。如何提取仅包含双精度的样本?我试着以df1.l

编辑:原来我最初的问题只是一个版本问题。然而,在回答我最初的问题的过程中,还提出了一些其他问题,因此我重新编写了这些问题,并将它们列在下面:

  • 我正在熟悉熊猫的一些能力,即。文件建议使用lambda函数,例如,提取特征“A”值大于0的数据帧df1中的所有样本:

    df1.loc[lambda df: df.A > 0, :]
    
    有没有一种更紧凑、更像蟒蛇的方法

  • 假设df1现在是一个具有特性a的数据帧,但是值是混合的双元组和三元组(2元组和3元组)。如何提取仅包含双精度的样本?我试着以
    df1.loc[len(df1.A)>2,:]
    的方式来做这件事,但很明显,pandas没有按照我期望的方式来传播这些值


  • 您可以在不使用lambda函数的情况下执行您想要执行的操作,如下所示:

    df1.loc[df1.A>0,:]
    

    可能文档已经过时。

    您必须重新启动
    IDE

    你的另一个:

    apply
    len
    一起使用:

    import pandas as pd
    
    data = {'A': [(1,2), (1,2), (1,2), (1,2), (1,2,4), (1,2,3)],
            'B': [13, 98, 23, 45, 64, 10]}
    
    df = pd.DataFrame(data)
    
    print (df)
               A   B
    0     (1, 2)  13
    1     (1, 2)  98
    2     (1, 2)  23
    3     (1, 2)  45
    4  (1, 2, 4)  64
    5  (1, 2, 3)  10
    
    print (df[df.A.apply(len) >2])
    
               A   B
    4  (1, 2, 4)  64
    5  (1, 2, 3)  10
    

    对我来说效果不错。可能重新启动anaconda或其他IDE。您确定要更新吗?你能通过键入pd来确认吗?它在我的机器上按预期工作。我用的是熊猫0.18.1。哦,太尴尬了!重新启动IDE工作正常。谢谢大家!你能删除这个问题吗?谢谢!下面是一个后续问题:假设df1现在是一个具有特性a的数据帧,但是值是混合的双元组和三元组(2元组和3元组)。如何提取仅包含双精度的样本?我试着以df1.loc[len(df1.A)>2,:]的形式来做这件事,但很明显,pandas并没有按照我期望的方式来传播这些值。