<small id='d9rDk'></small><noframes id='d9rDk'>

        <i id='d9rDk'><tr id='d9rDk'><dt id='d9rDk'><q id='d9rDk'><span id='d9rDk'><b id='d9rDk'><form id='d9rDk'><ins id='d9rDk'></ins><ul id='d9rDk'></ul><sub id='d9rDk'></sub></form><legend id='d9rDk'></legend><bdo id='d9rDk'><pre id='d9rDk'><center id='d9rDk'></center></pre></bdo></b><th id='d9rDk'></th></span></q></dt></tr></i><div id='d9rDk'><tfoot id='d9rDk'></tfoot><dl id='d9rDk'><fieldset id='d9rDk'></fieldset></dl></div>
        <legend id='d9rDk'><style id='d9rDk'><dir id='d9rDk'><q id='d9rDk'></q></dir></style></legend>
          <bdo id='d9rDk'></bdo><ul id='d9rDk'></ul>
        <tfoot id='d9rDk'></tfoot>
      1. 如何使用GROUPBY和应用极点

        时间:2024-08-21

      2. <small id='4rPfX'></small><noframes id='4rPfX'>

          1. <tfoot id='4rPfX'></tfoot>
              <bdo id='4rPfX'></bdo><ul id='4rPfX'></ul>
              <i id='4rPfX'><tr id='4rPfX'><dt id='4rPfX'><q id='4rPfX'><span id='4rPfX'><b id='4rPfX'><form id='4rPfX'><ins id='4rPfX'></ins><ul id='4rPfX'></ul><sub id='4rPfX'></sub></form><legend id='4rPfX'></legend><bdo id='4rPfX'><pre id='4rPfX'><center id='4rPfX'></center></pre></bdo></b><th id='4rPfX'></th></span></q></dt></tr></i><div id='4rPfX'><tfoot id='4rPfX'></tfoot><dl id='4rPfX'><fieldset id='4rPfX'></fieldset></dl></div>
                  <legend id='4rPfX'><style id='4rPfX'><dir id='4rPfX'><q id='4rPfX'></q></dir></style></legend>
                    <tbody id='4rPfX'></tbody>
                  本文介绍了如何使用GROUPBY和应用极点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正试图弄清楚如何在Python的库极性中使用groupbyapply

                  我的头都要碎了。

                  来自 pandas ,我使用的是:

                  def get_score(df):
                     return spearmanr(df["prediction"], df["target"]).correlation
                  
                  correlations = df.groupby("era").apply(get_score)
                  

                  但在极地,这不起作用。

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

                  correlations = df.groupby("era").apply(get_score)
                  

                  但此操作失败,并显示错误消息:

                  "

                  "可以通过网络获取DataFrame属性"_df"。请确保返回DataFrame对象。语法:PyErr{type:<;class‘AttributeError’>;,value:AttributeError(";‘numpy.float64’对象没有属性‘_df’";),

                  有什么想法吗?

                  推荐答案

                  polars>=0.10.4开始,您可以使用pl.spearman_rank_corr函数。

                  如果您想使用自定义函数,可以这样做:

                  多列/表达式上的自定义函数

                  import polars as pl
                  from typing import List
                  from scipy import stats
                  
                  df = pl.DataFrame({
                      "g": [1, 1, 1, 2, 2, 2, 5],
                      "a": [2, 4, 5, 190, 1, 4, 1],
                      "b": [1, 3, 2, 1, 43, 3, 1]
                  })
                  
                  def get_score(args: List[pl.Series]) -> pl.Series:
                      return pl.Series([stats.spearmanr(args[0], args[1]).correlation], dtype=pl.Float64)
                  
                  (df.groupby("g", maintain_order=True)
                   .agg(
                      pl.apply(
                          exprs=["a", "b"], 
                          f=get_score).alias("corr")
                   ))
                  

                  极点提供的函数

                  (df.groupby("g", maintain_order=True)
                   .agg(
                       pl.spearman_rank_corr("a", "b").alias("corr")
                   ))
                  

                  两个输出:

                  shape: (3, 2)
                  ┌─────┬──────┐
                  │ g   ┆ corr │
                  │ --- ┆ ---  │
                  │ i64 ┆ f64  │
                  ╞═════╪══════╡
                  │ 1   ┆ 0.5  │
                  ├┼┤
                  │ 2   ┆ -1e0 │
                  ├┼┤
                  │ 5   ┆ NaN  │
                  └─────┴──────┘
                  

                  单个列/表达式上的自定义函数

                  我们还可以通过.apply.map对单个表达式应用自定义函数。

                  下面是一个示例,说明如何使用自定义函数和普通极轴表达式对列进行平方。表达式语法 应该始终首选,因为这样要快得多。

                  (df.groupby("g")
                   .agg(
                       pl.col("a").apply(lambda group: group**2).alias("squared1"),
                       (pl.col("a")**2).alias("squared2")
                   ))
                  

                  applymap有什么区别?

                  map处理整列seriesapply根据上下文处理单个值或单个组。

                  select上下文:
                  • map
                    • 输入输出类型:Series
                    • 输入语义:列值
                  • apply
                    • 输入输出类型:Union[int, float, str, bool]
                    • 输入语义:一列单值
                  groupby上下文:
                  • map
                    • 输入输出类型:Series
                    • 输入语义:值为分组的列表列
                  • apply
                    • 输入输出类型:Series
                    • 输入的语义:分组

                  这篇关于如何使用GROUPBY和应用极点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Python Dataframe Groupby Mean和Std 下一篇:Pandas:按两列分组并随机选择组,这样第一列中的每个值都将由单个组表示

                  相关文章

                    <legend id='Hue4x'><style id='Hue4x'><dir id='Hue4x'><q id='Hue4x'></q></dir></style></legend>

                    <i id='Hue4x'><tr id='Hue4x'><dt id='Hue4x'><q id='Hue4x'><span id='Hue4x'><b id='Hue4x'><form id='Hue4x'><ins id='Hue4x'></ins><ul id='Hue4x'></ul><sub id='Hue4x'></sub></form><legend id='Hue4x'></legend><bdo id='Hue4x'><pre id='Hue4x'><center id='Hue4x'></center></pre></bdo></b><th id='Hue4x'></th></span></q></dt></tr></i><div id='Hue4x'><tfoot id='Hue4x'></tfoot><dl id='Hue4x'><fieldset id='Hue4x'></fieldset></dl></div>
                  1. <small id='Hue4x'></small><noframes id='Hue4x'>

                    <tfoot id='Hue4x'></tfoot>

                        <bdo id='Hue4x'></bdo><ul id='Hue4x'></ul>