1

我使用Polars库进行数据框操作。我有两个数据框,我想根据条件使用从另一个数据框获取的单个值更新一个数据框的列值。这是代码:

tmp = df[df['UnifiedInvoiceID'] == inv]
mask = (df_invoice_features['UnifiedInvoiceID'] == inv)
df_invoice_features[mask, 'UnifiedCustomerID'] = tmp[0, 'UnifiedCustomerID']

而且,这是错误:

PySeries.new_u64() missing 1 required positional argument: '_strict'

为什么你认为这样的错误会返回?

4

1 回答 1

2

Polars 的语法与 pandas 的语法非常不同。在我看来,您正在尝试像在 pandas DataFrame 上那样修改值。

以下是如何设置列值的示例:

df = pl.DataFrame({
    "a": [1, 2, 3, 4, 5],
    "b": list("abcde")
})

df.with_column(
    pl.when(pl.col("a") > 3).then(10).otherwise(pl.col("a")).alias("new")
)

输出:

shape: (5, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ new │
│ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ i64 │
╞═════╪═════╪═════╡
│ 1   ┆ a   ┆ 1   │
├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
│ 2   ┆ b   ┆ 2   │
├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
│ 3   ┆ c   ┆ 3   │
├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
│ 4   ┆ d   ┆ 10  │
├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
│ 5   ┆ e   ┆ 10  │
└─────┴─────┴─────┘

如果你举一个小例子,我可以举一个更全面的例子。我还建议阅读用户指南,尤其是表达式指南:https ://pola-rs.github.io/polars-book/user-guide/dsl/intro.html

于 2021-10-19T14:09:05.460 回答