如何将大型多列极坐标数据矩阵中大于 9999 的所有整数值替换为字符串“10K+”?
我尝试了 df.map、df.apply 和 df.applymap:
labels = df.map(lambda v: '10K+' if v > 10000 else v) AttributeError:“DataFrame”对象没有属性“map”。您的意思是:“最大”吗?
labels = df.apply(lambda v: '10K+' if v > 10000 else v) 类型错误:“tuple”和“int”实例之间不支持“>”
labels = df.applymap(lambda v: '10K+' if v > 10000 else v) AttributeError:“DataFrame”对象没有属性“applymap”
使用
when
-then
表达式。
>>> df = pl.DataFrame({
... 'Col1': [2, 74, 37, 36, 95],
... 'Col2': [36, 80, 9, 26, 16],
... })
>>> df.with_columns([
... pl.when(pl.col(i) > 10).then(pl.lit('10+'))
... .otherwise(pl.col(i).cast(pl.String)).alias(i)
... for i in df.columns
... ])
shape: (5, 2)
┌──────┬──────┐
│ Col1 ┆ Col2 │
│ --- ┆ --- │
│ str ┆ str │
╞══════╪══════╡
│ 2 ┆ 10+ │
│ 10+ ┆ 10+ │
│ 10+ ┆ 9 │
│ 10+ ┆ 10+ │
│ 10+ ┆ 10+ │
└──────┴──────┘
在此示例中,只需更改硬编码的
10
和 10+
即可。您不能使用 then('10+')
,因为它将其解释为列引用。为此,您需要用 pl.lit
将其包裹起来。