Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫间隔数据类型-查找中点、左侧、中间等_Python_Pandas_Intervals - Fatal编程技术网

Python 熊猫间隔数据类型-查找中点、左侧、中间等

Python 熊猫间隔数据类型-查找中点、左侧、中间等,python,pandas,intervals,Python,Pandas,Intervals,在pandas 20.1中,使用区间类型,可以在序列中找到中点、左侧或中心值 例如: 创建间隔数据类型列,并在这些间隔上执行一些聚合计算: df_Stats = df.groupby(['month',pd.cut(df['Distances'], np.arange(0, 135,1))]).agg(aggregations) 这将返回具有间隔列数据类型的df_统计信息:df['distance'] 现在,我想使用一个系列函数将间隔的左端与这些聚合的结果相关联: df['LeftEnd']

在pandas 20.1中,使用区间类型,可以在序列中找到中点、左侧或中心值

例如:

  • 创建间隔数据类型列,并在这些间隔上执行一些聚合计算:

    df_Stats = df.groupby(['month',pd.cut(df['Distances'], np.arange(0, 135,1))]).agg(aggregations)
    
  • 这将返回具有间隔列数据类型的df_统计信息:
    df['distance']

  • 现在,我想使用一个系列函数将间隔的左端与这些聚合的结果相关联:

    df['LeftEnd'] = df['Distances'].left
    
  • 但是,我可以按如下方式运行此元素:

        df.loc[0]['LeftEnd'] = df.loc[0]['Distances'].left
    
    这很有效。想法?

    因此
    pd.cut()
    实际上创建了一个
    CategoricalIndex
    ,其中一个
    IntervalIndex
    作为类别

    In [13]: df = pd.DataFrame({'month': [1, 1, 2, 2], 'distances': range(4), 'value': range(4)})
    
    In [14]: df
    Out[14]: 
       distances  month  value
    0          0      1      0
    1          1      1      1
    2          2      2      2
    3          3      2      3
    
    In [15]: result = df.groupby(['month', pd.cut(df.distances, 2)]).value.mean()
    
    In [16]: result
    Out[16]: 
    month  distances    
    1      (-0.003, 1.5]    0.5
    2      (1.5, 3.0]       2.5
    Name: value, dtype: float64
    
    您可以简单地将它们强制为
    IntervalIndex
    (如果它们是列,也可以这样做),然后访问

    In [17]: pd.IntervalIndex(result.index.get_level_values('distances')).left
    Out[17]: Float64Index([-0.003, 1.5], dtype='float64')
    
    In [18]: pd.IntervalIndex(result.index.get_level_values('distances')).right
    Out[18]: Float64Index([1.5, 3.0], dtype='float64')
    
    In [19]: pd.IntervalIndex(result.index.get_level_values('distances')).mid
    Out[19]: Float64Index([0.7485, 2.25], dtype='float64')
    

    执行pd.cut后,说“cut”是列名

    而不是->

     df['LeftEnd'] = df['Distances'].left
    
    执行以下操作之一-->

     df['LeftEnd'] = df['cut'].apply(lambda x: x.left)
    
     df['LeftEnd'] = df['cut'].apply(lambda x: x.left).astype(str)