极性:用set schema向空数据框添加一个列



我创建了一个具有集合模式的空数据框架。模式设置列的数据类型。我想在空数据框中添加一个名称匹配列(系列)。但它似乎不喜欢它。

# Empty dataframe with a given schema    
df = pl.DataFrame(schema={"my_string_col":str, "my_int_col": int, "my_bool_col": bool})
# Now I try to add a series to it
df = df.with_columns(pl.Series(name="my_int_col", values=[1, 2, 3, 4, 5]))

但是我得到以下错误:

exceptions.ShapeError: unable to add a column of length 5 to a dataframe of height 0

看起来好像polar无法填充其余的列(即my_string_col &My_bool_col)和空值。在Pandas中,你可以通过多种方式做到这一点,我想知道我是否错过了什么,或者还没有实现?

这实际上是一个.join操作

col = pl.Series(name="my_int_col", values=[1, 2, 3, 4, 5])
df.join(col.to_frame(), on=col.name, how="outer")
shape: (5, 3)
┌───────────────┬────────────┬─────────────┐
│ my_string_col ┆ my_int_col ┆ my_bool_col │
│ ---           ┆ ---        ┆ ---         │
│ str           ┆ i64        ┆ bool        │
╞═══════════════╪════════════╪═════════════╡
│ null          ┆ 1          ┆ null        │
│ null          ┆ 2          ┆ null        │
│ null          ┆ 3          ┆ null        │
│ null          ┆ 4          ┆ null        │
│ null          ┆ 5          ┆ null        │
└───────────────┴────────────┴─────────────┘

您正在尝试将具有5个元素的系列添加到具有0行的空DataFrame。

import polars as pl
df_new = pl.DataFrame({
"my_string_col": [None],
"my_int_col": [1],
"my_bool_col": [None]
})
dfs = [df_new] * 5
df = pl.concat(dfs)
print(df)

输出:

shape: (5, 3)
┌───────────────┬────────────┬─────────────┐
│ my_string_col ┆ my_int_col ┆ my_bool_col │
│ ---           ┆ ---        ┆ ---         │
│ f64           ┆ i64        ┆ f64         │
╞═══════════════╪════════════╪═════════════╡
│ null          ┆ 1          ┆ null        │
│ null          ┆ 1          ┆ null        │
│ null          ┆ 1          ┆ null        │
│ null          ┆ 1          ┆ null        │
│ null          ┆ 1          ┆ null        │
└───────────────┴────────────┴─────────────┘

相关内容

  • 没有找到相关文章

最新更新