2024-04-25 10:27:20 发布
网友
我有df,它有不同的列,其中一些包含list,我想得到所有包含list的列,这样我就可以只对它们运行函数
df:
Name Test_Column1 Test_Column2 Test_Column3 A ['a', 'b'] Test ['b']
所以理想情况下,我希望得到列的列表['Test_Column1','Test_Column3']
如果要测试列表的所有列,请使用^{}:
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()
这不干净,但您可以执行以下操作:
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!")
然后可以保存它们,而不是打印。仅当列中的所有元素都是list类型时,此选项才有效。您可以将其切换为any()或您自己的支票。我确信有一种更干净的方法可以在不需要循环的列中应用它,但我却没有想到
any()
如果要测试列表的所有列,请使用^{} :
如果只想测试第一行,则可以简化解决方案:
这不干净,但您可以执行以下操作:
然后可以保存它们,而不是打印。仅当列中的所有元素都是list类型时,此选项才有效。您可以将其切换为
any()
或您自己的支票。我确信有一种更干净的方法可以在不需要循环的列中应用它,但我却没有想到相关问题 更多 >
编程相关推荐