我的输入格式如下:
import polars as pl
data = {"Name": ['Name_A', 'Name_B','Name_C'], "val_1": ['a',None, 'a'],"val_2": [None,None, 'b'],"val_3": [None,'c', None],"val_4": ['c',None, 'g'],"val_5": [None,None, 'i']}
df = pl.DataFrame(data)
print(df)
shape: (3, 6)
┌────────┬───────┬───────┬───────┬───────┬───────┐
│ Name ┆ val_1 ┆ val_2 ┆ val_3 ┆ val_4 ┆ val_5 │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str ┆ str ┆ str │
╞════════╪═══════╪═══════╪═══════╪═══════╪═══════╡
│ Name_A ┆ a ┆ null ┆ null ┆ c ┆ null │
│ Name_B ┆ null ┆ null ┆ c ┆ null ┆ null │
│ Name_C ┆ a ┆ b ┆ null ┆ g ┆ i │
└────────┴───────┴───────┴───────┴───────┴───────┘
我希望输出为:
shape: (3, 7)
┌────────┬───────┬───────┬───────┬───────┬───────┬───────────────────┐
│ Name ┆ val_1 ┆ val_2 ┆ val_3 ┆ val_4 ┆ val_5 ┆ combined │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str ┆ str ┆ str ┆ list[str] │
╞════════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════════════════╡
│ Name_A ┆ a ┆ null ┆ null ┆ c ┆ null ┆ ["a", "c"] │
│ Name_B ┆ null ┆ null ┆ c ┆ null ┆ null ┆ ["c"] │
│ Name_C ┆ a ┆ b ┆ null ┆ g ┆ i ┆ ["a", "b","g""i"] │
└────────┴───────┴───────┴───────┴───────┴───────┴───────────────────┘
我想将除“名称”列以外的所有列合并为一个列表。我已经简化了这个问题的数据,但实际上我们有许多瓦尔_N格式的列,如果有一个通用代码,我就不必列出每个列名了。
1条答案
按热度按时间vfh0ocws1#
对于问题中的主要答案你可以做
pl.exclude
是如何得到所有列,但给定的。为了在最终的列表中去掉
nulls
,0.19.4版本刚刚引入了list.drop_nulls
。