标签: python-polars

与 Polars 中 pandas 的“DataFrame.drop_duplicates()”等效的是什么?

drop_duplicates()来自极地的熊猫相当于什么?

\n
import polars as pl\ndf = pl.DataFrame({"a":[1,1,2], "b":[2,2,3], "c":[1,2,3]})\ndf\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
shape: (3, 3)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a   \xe2\x94\x86 b   \xe2\x94\x86 c   \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 --- \xe2\x94\x86 --- \xe2\x94\x82\n\xe2\x94\x82 i64 \xe2\x94\x86 i64 \xe2\x94\x86 i64 \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 1   \xe2\x94\x86 2   \xe2\x94\x86 1   \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x86 2   \xe2\x94\x86 2   \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 2   \xe2\x94\x86 3   \xe2\x94\x86 3   \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

代码:

\n
df.drop_duplicates(["a", "b"])\n
Run Code Online (Sandbox Code Playgroud)\n

产生以下错误:

\n

属性错误:未找到 drop_duplicates

\n

python unique duplicates python-polars

23
推荐指数
1
解决办法
2万
查看次数

Polars:使用变量的固定值创建列

我已经擦洗了polars文档,但看不到从变量创建具有固定值的列的示例。这是有效的pandas

df['VERSION'] = version
Run Code Online (Sandbox Code Playgroud)

谢谢

python-polars

20
推荐指数
1
解决办法
2万
查看次数

在 Polars 中轻松将字符串列转换为 pl.datetime

考虑一个 Polars 数据框,其中有一列str类型指示格式中的日期'27 July 2020'。我想将此列转换为polars.datetime与 Python 标准不同的类型datetime。以下代码使用标准datetime格式,可以运行,但 Polars 不会将列中的值识别为日期。

import polars as pl
from datetime import datetime

df = pd.read_csv('<some CSV file containing a column called 'event_date'>')
df = df.with_columns([   
        pl.col('event_date').apply(lambda x: x.replace(" ","-"))\
                            .apply(lambda x: datetime.strptime(x, '%d-%B-%Y'))
])

Run Code Online (Sandbox Code Playgroud)

假设我们尝试进一步处理df以创建一个新列,指示事件发生的季度。

df = df.with_columns([
        pl.col('event_date').apply(lambda x: x.month)\
                            .apply(lambda x: 1 if x in range(1,4) else 2 if x in range(4,7) else 3 if x in range(7,10) else 4)\
                            .alias('quarter') …
Run Code Online (Sandbox Code Playgroud)

python python-polars

17
推荐指数
1
解决办法
3万
查看次数

Py Polars:如何像 SQL 中一样使用“in”和“not in”进行过滤

如何实现 SQL 的 IN 和 NOT IN 的等效功能?

我有一个包含所需值的列表。这是场景:

import pandas as pd
import polars as pl
exclude_fruit = ["apple", "orange"]

df = pl.DataFrame(
    {
        "A": [1, 2, 3, 4, 5, 6],
        "fruits": ["banana", "banana", "apple", "apple", "banana", "orange"],
        "B": [5, 4, 3, 2, 1, 6],
        "cars": ["beetle", "audi", "beetle", "beetle", "beetle", "frog"],
        "optional": [28, 300, None, 2, -30, 949],
    }
)
df.filter(~pl.select("fruits").str.contains(exclude_fruit))
df.filter(~pl.select("fruits").to_pandas().isin(exclude_fruit))
df.filter(~pl.select("fruits").isin(exclude_fruit))
Run Code Online (Sandbox Code Playgroud)

python python-polars

17
推荐指数
1
解决办法
2万
查看次数

如何使用 groupby 并应用 Polars

我正在绞尽脑汁地试图弄清楚如何在Python的极坐标库中使用groupbyand 。apply

来自 Pandas,我使用的是:

def get_score(df):
   return spearmanr(df["prediction"], df["target"]).correlation

correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)

但在极地,这不起作用。

我尝试了几种方法,主要是:

correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)

但这失败并出现错误消息:

'可以获取 DataFrame 属性'_df'。确保返回 DataFrame 对象。: PyErr { type: <class 'AttributeError'>, value: AttributeError("'numpy.float64' object has no attribute '_df'"),

有任何想法吗?

python pandas pandas-groupby python-polars

16
推荐指数
1
解决办法
1万
查看次数

在 Polars 中,如何打印列表列的所有元素?

我有一个DataFrame带有列表栏的 Polars。我想控制pl.List打印一列的多少个元素。

\n

我已经尝试过pl.pl.Config.set_fmt_str_lengths(),但这仅限制设置为较小值的元素数量,对于较大值,它不会显示更多元素。

\n

我在 Jupyterlab 工作,但我认为这是一个普遍问题。

\n
import polars as pl\n\nN = 5\ndf = (\n    pl.DataFrame(\n        {\n            \'id\': range(N)\n        }\n    )\n    .with_row_count("value")\n    .groupby_rolling(\n        "id",period=f"{N}i"\n    )\n    .agg(\n        pl.col("value")\n    )\n)\ndf\nshape: (5, 2)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 id  \xe2\x94\x86 value         \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 ---           \xe2\x94\x82\n\xe2\x94\x82 i64 \xe2\x94\x86 list[u32]     \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 0   \xe2\x94\x86 [0]           \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x86 [0, 1]        \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 2   \xe2\x94\x86 [0, 1, 2]     \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 3   \xe2\x94\x86 [0, 1, ... 3] \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 4   \xe2\x94\x86 [0, 1, ... 4] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

python-polars

16
推荐指数
2
解决办法
1万
查看次数

Polars:Polars 中有类似 json_normalize 的功能吗?

我浏览了 Polars 的整个文档,但找不到任何可以将嵌套 json 转换为数据帧的内容。

test = {
  "name": "Ravi",
  "Subjects": {
    "Maths": 92,
    "English": 94,
    "Hindi": 98
  }
}
Run Code Online (Sandbox Code Playgroud)

pandas 中的 json_normalize 会通过将列命名为 name、Subjects.Maths、Subjects.English 和Subjects.Hindi 将其转换为数据框。那么这在 Polars 有可能吗?我确实尝试了所有功能,但它总是抛出错误,因为它不理解嵌套结构。

python python-polars

15
推荐指数
2
解决办法
4872
查看次数

15
推荐指数
3
解决办法
1万
查看次数

如何使用 .with_columns() 将列添加到极坐标 DataFrame

我目前正在使用极坐标数据框中创建一个新列

predictions = [10, 20, 30, 40, 50]
df['predictions'] = predictions
Run Code Online (Sandbox Code Playgroud)

其中predictions是一个 numpy 数组或列表,其中包含我用其他工具计算的值。

然而,Polars 发出警告,该选项将被弃用。如何使用 来实现相同的结果.with_columns()

python-polars

15
推荐指数
1
解决办法
1万
查看次数

提取 Polars 文字的值

如果我有一个 Polars 文字,如何提取该值?

import polars as pl

expr = pl.lit(0.5)

val = float(expr)
# TypeError: float() argument must be a string or a real number, not 'Expr'
Run Code Online (Sandbox Code Playgroud)

python-polars

12
推荐指数
1
解决办法
1万
查看次数