Python:聚合 poly1d 对象并插入到新的 DataFrame 列中

多伊兹

我有一个由一列中的多项式 1d 对象组成的数据框,我想对数据框进行分组,然后将组中的所有多项式系数求和并除以组中的行数。

但是,我在处理 poly1d 对象时遇到了困难。

def agg_coeffs(df):

    g_all = pd.DataFrame()

    for key, g in df.groupby(['A', 'B']):
        agg_coeffs = pd.DataFrame({"agg coeffs":list(sum(g['coeffs']) / len(g['coeffs']))})
        g_all = pd.concat([g_all, agg_coeffs])

    return g_all

上面的函数在不同的行中输出修改后的系数,但我希望它们都在同一行中并保留为 poly1d 对象(而不是数组或列表)。

错误的输出:

    agg coeffs
0   1.91
1   88.76
2   2.5

示例数据框:

                 coeffs                             A           B       
        10227   [0.0767614738203, 91.6253393665]    2016        p1  
        10311   [4.47454751131, 44.9313348416]      2016        p2  
        10367   [2.38170652877, 133.884680026]      2016        p3  
        10309   [0.736288998358, 84.6403688266]     2016        p4

注意:与 poly1d 对象一样,“coeffs”列中的单元格如下所示:0.0767614738203 x2 + 91.6253393665 + 10(截距不显示在数据框中,但当单元格从 df.

预期输出:

                 coeffs         A           B       
        0       [1.91, 88.76]   2016        p1  

将函数更改为此(删除列表包装器):

def agg_coeffs(df):

    g_all = pd.DataFrame()

    for key, g in df.groupby(['A', 'B']):

        g.loc[:,'agg coeffs'] = sum(g['coeffs']) / len(g['coeffs'])
        g_all = pd.concat([g_all, g])

    return g_all

结果就行了这个错误g.loc[:,'agg coeffs'] = sum(g['coeffs']) / len(g['coeffs']):

ValueError:使用可迭代对象设置时必须具有相等的 len 键和值

约翰·兹温克

将系数拆分为常规数字列:

df['c1'] = df['c2'] = df['c3'] = np.nan
df[['c1', 'c2', 'c3']] = [x.c for x in df.coeff]

然后 groupby 和 agg:

grouped = df.groupby('A', as_index=False)
df2 = grouped.agg({'B':'first', 'c1':'mean', 'c2':'mean', 'c3':'mean'})

给你:

      A   B        c1         c2   c3
0  2016  p1  1.917326  88.770431  2.5

然后组合回 poly1d 对象:

df2['coeff'] = df2[['c1','c2','c3']].apply(np.poly1d, axis=1)

给你:

      A   B        c1         c2   c3                           coeff
0  2016  p1  1.917326  88.770431  1.0  [1.91732612805, 88.7704307652]

不过要小心:poly1d 持有一个引用,而不是它的参数的副本,所以如果你删除 c1/c2/c3 列,它会破坏 coeff。如果需要,您可以通过在应用期间复制 poly1d 参数来解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python熊猫中聚合DataFrame?

来自分类Dev

Python Pandas中DataFrame中的值聚合?

来自分类Dev

Python Pandas中DataFrame的复杂聚合?

来自分类Dev

在Pandas DataFrame Python中添加新列

来自分类Dev

元组元素到python中的dataframe列

来自分类Dev

有条件地将来自不同DataFrame的聚合列连接到新DataFrame中

来自分类Dev

使用Matplotlib的Poly1d

来自分类Dev

带有json列的pyspark dataframe将json元素聚合到新列中并删除重复的

来自分类Dev

Python Pandas中的DataFrame中的多索引难于聚合?

来自分类Dev

有条件地将来自不同DataFrame的聚合列连接到一个新的DataFrame中

来自分类Dev

使用python词典中的值的新pandas dataframe列

来自分类Dev

如何使用python DataFrame中的条件创建新列?

来自分类Dev

在Python中排序聚合的DataFrame

来自分类Dev

Python Pandas-根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列相除

来自分类Dev

如何基于Python Pandas中的其他列在DataFrame中创建新列?

来自分类Dev

python中Dataframe的Concat列?

来自分类Dev

python列表到dataframe对象

来自分类Dev

在pandas的Dataframe中插入一些基于新列的值的新列

来自分类Dev

Spark DataFrame按键将列值聚合到列表中

来自分类Dev

聚合在PySpark的DataFrame中的列数组吗?

来自分类Dev

在 PySpark Dataframe 中结合旋转和聚合列

来自分类Dev

如何将DataFrame中的特定列插入数据库表的新列中?

来自分类Dev

Python Pandas DataFrame列插入调用

来自分类Dev

通过聚合在python中创建新变量

来自分类Dev

在python 2中通过聚合创建新变量

来自分类Dev

如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

来自分类Dev

将1的random插入到列pandas数据框python中

来自分类Dev

如果其他条件在python中在dataframe中创建一个新列

来自分类Dev

在SQLite或Python中聚合

Related 相关文章

  1. 1

    在Python熊猫中聚合DataFrame?

  2. 2

    Python Pandas中DataFrame中的值聚合?

  3. 3

    Python Pandas中DataFrame的复杂聚合?

  4. 4

    在Pandas DataFrame Python中添加新列

  5. 5

    元组元素到python中的dataframe列

  6. 6

    有条件地将来自不同DataFrame的聚合列连接到新DataFrame中

  7. 7

    使用Matplotlib的Poly1d

  8. 8

    带有json列的pyspark dataframe将json元素聚合到新列中并删除重复的

  9. 9

    Python Pandas中的DataFrame中的多索引难于聚合?

  10. 10

    有条件地将来自不同DataFrame的聚合列连接到一个新的DataFrame中

  11. 11

    使用python词典中的值的新pandas dataframe列

  12. 12

    如何使用python DataFrame中的条件创建新列?

  13. 13

    在Python中排序聚合的DataFrame

  14. 14

    Python Pandas-根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列相除

  15. 15

    如何基于Python Pandas中的其他列在DataFrame中创建新列?

  16. 16

    python中Dataframe的Concat列?

  17. 17

    python列表到dataframe对象

  18. 18

    在pandas的Dataframe中插入一些基于新列的值的新列

  19. 19

    Spark DataFrame按键将列值聚合到列表中

  20. 20

    聚合在PySpark的DataFrame中的列数组吗?

  21. 21

    在 PySpark Dataframe 中结合旋转和聚合列

  22. 22

    如何将DataFrame中的特定列插入数据库表的新列中?

  23. 23

    Python Pandas DataFrame列插入调用

  24. 24

    通过聚合在python中创建新变量

  25. 25

    在python 2中通过聚合创建新变量

  26. 26

    如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

  27. 27

    将1的random插入到列pandas数据框python中

  28. 28

    如果其他条件在python中在dataframe中创建一个新列

  29. 29

    在SQLite或Python中聚合

热门标签

归档