我想根据条件选择Polars DataFrame中的列。在我的示例中,我想选择唯一值少于100个的所有字符串列。我天真地尝试了:
df.select((pl.col(pl.Utf8)) & (pl.all().n_unique() < 100))
这给了我一个错误,可能是由于表达式的第二部分。
df.select(pl.all().n_unique() < 100)
这不会选择列,而是返回一个bool值的单行DataFrame。我是polars的新手,我想我仍然不能完全理解表达式API。我做错了什么?
2条答案
按热度按时间qlfbtfca1#
如果您包含一个示例,以使其他人不必创建一个示例,这将很有帮助。
您正在选择字符串列
pl.col(pl.Utf8)
您可以将
.n_unique()
链接到pl.col()
,以便仅在这些列上运行它。您可以循环此结果,并为每个
true
列提取.name
。没有
.is_true()
,但.all()
是等效的。然后,您可以只选择这些列:
icnyk63a2#
您可以通过执行
melt
后跟groupby
来获取列的名称,但我不太确定如何将其转换为表达式