【问题标题】:How to get list of columns from dataframe which start with specific value?如何从数据框中获取以特定值开头的列列表?
【发布时间】:2021-03-19 10:56:24
【问题描述】:

我的 df 有不同的列,其中一些包含列表,我想获取所有包含列表的列,以便我只能在它们上运行函数。

df:

Name      Test_Column1        Test_Column2           Test_Column3
A         ['a', 'b']           Test                   ['b']

理想情况下,我想获取列 ['Test_Column1','Test_Column3']

【问题讨论】:

    标签: python pandas dataframe python-re


    【解决方案1】:

    这不干净,但你可以这样做:

    pd.DataFrame({"listcol":[[1, 2], [2, 3]], "normalcol":[1, 2]})
    for col in df:
        if all(df.loc[:,col].apply(lambda x: isinstance(x, list))):
            print("all values in", col, "are of type list!")
    

    您可以保存它们,而不是打印。这仅在列中的所有元素都是列表类型时才有效。您可以将其换成any() 或您自己的支票。我确信有一种更简洁的方法可以在不需要循环的列中应用它,但它让我无法理解。

    【讨论】:

      【解决方案2】:

      如果要测试列表的所有列,请使用DataFrame.applymap

      cols = df.columns[df.applymap(lambda x: isinstance(x, list)).all()].tolist()
      print (cols)
      ['Test_Column1','Test_Column3']
      

      如果只想测试第一行可以简化解决方案:

      cols = df.columns[df.iloc[0].apply(lambda x: isinstance(x, list))].tolist()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多