【问题标题】:Python Pandas Lambda rows renaming of anonymous functions?Python Pandas Lambda行重命名匿名函数?
【发布时间】:2018-12-18 08:02:41
【问题描述】:

我想将带有 Q10 和 Q90 的分位数函数重命名为 pandas 结果。

import numpy as np
import pandas as pd
quantile10 = lambda myDf :  myDf.quantile(q=0.10)
quantile90 = lambda myDf :  myDf.quantile(q=0.90)
df.agg([min,max, np.median, np.std, pd.DataFrame.mean, quantile10, quantile90])

我希望每个<lambda> 分别是Q10 和Q90。

【问题讨论】:

    标签: python pandas rename


    【解决方案1】:

    参见:aggregate,将列名和函数的字典传递给agg。

    df.agg({"quantile10": quantile10, .... })
    

    【讨论】:

      【解决方案2】:

      使用__name__:

      df = pd.DataFrame({'B':[4,5,4,5,5,4],
                         'C':[7,8,9,4,2,3],
                         'D':[1,3,5,7,1,0],
                         'E':[5,3,6,9,2,4]})
      
      quantile10 = lambda myDf :  myDf.quantile(q=0.10)
      quantile10.__name__ = 'Q10'
      quantile90 = lambda myDf :  myDf.quantile(q=0.90)
      quantile90.__name__ = 'Q90'
      
      df = df.agg([min,max, np.median, np.std, pd.DataFrame.mean, quantile10, quantile90])
      
      print (df)
      
                     B         C         D         E
      min     4.000000  2.000000  0.000000  2.000000
      max     5.000000  9.000000  7.000000  9.000000
      median  4.500000  5.500000  2.000000  4.500000
      std     0.547723  2.880972  2.714160  2.483277
      mean    4.500000  5.500000  2.833333  4.833333
      Q10     4.000000  2.500000  0.500000  2.500000
      Q90     5.000000  8.500000  6.000000  7.500000
      

      【讨论】:

        猜你喜欢
        • 2020-04-25
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多