如何从数据框中获取以特定值开头的列列表?
How to get list of columns from dataframe which start with specific value?
我有 df,它有不同的列,其中一些包含列表,我想获取包含列表的所有列,这样我就可以 运行 仅对它们起作用。
df:
Name Test_Column1 Test_Column2 Test_Column3
A ['a', 'b'] Test ['b']
所以理想情况下我想获得列列表 ['Test_Column1','Test_Column3']
这不是干净的,但你可以这样做:
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()
或您自己的支票。我敢肯定,有一种更简洁的方法可以跨列应用它,不需要循环,但它逃脱了我。
如果要测试列表的所有列,请使用 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()
我有 df,它有不同的列,其中一些包含列表,我想获取包含列表的所有列,这样我就可以 运行 仅对它们起作用。
df:
Name Test_Column1 Test_Column2 Test_Column3
A ['a', 'b'] Test ['b']
所以理想情况下我想获得列列表 ['Test_Column1','Test_Column3']
这不是干净的,但你可以这样做:
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()
或您自己的支票。我敢肯定,有一种更简洁的方法可以跨列应用它,不需要循环,但它逃脱了我。
如果要测试列表的所有列,请使用 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()