【问题标题】:create a pd.Series object with the required length创建一个具有所需长度的 pd.Series 对象
【发布时间】:2021-05-21 16:29:21
【问题描述】:
sampleA = pd.concat([orderByUsersA['orders'],pd.Series(0,index=np.arange(visitors[visitors['group']=='A']['visitors'].sum() - len(orderByUsersA['orders'])), name='orders')],axis=0)

嗨, 这个问题来自我的课堂讲座。

我的问题是串联时,在系列构造的第二个参数中 (0,) Zero 代表什么。我通过删除零来检查它的功能来尝试代码,它返回了一个未来的警告......

弃用警告:空系列的默认 dtype 将是 'object' 而不是 'float64' 在未来的版本中。指定数据类型 明确地消除此警告。 """启动一个入口点 IPython 内核。

参数 0 有什么作用,还有什么其他参数可以给出?

【问题讨论】:

    标签: python pandas concatenation series


    【解决方案1】:

    我将只是 np.arange 内部的部分,但本质上您使用以下代码创建一个系列。

    import pandas as pd
    import numpy as np
    
    pd.Series(0, index=np.arange(10), name='orders')
    

    创建这样的系列使用位置 (0) 和命名 参数(index=np.arange(10)name='orders')的组合。

    如果我们查看Series class,它是一个具有多个参数的类,并且所有参数都定义了默认值:

    class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
    

    因此,根据您创建对象的方式,0 按位置分配给第一个预期参数,即data,然后通过您指定的参数名称确定indexname 是,最后它为您未指定的参数使用提供的默认值。

    所以你的对象是用

    创建的
    pd.Series(0, index=np.arange(10), name='orders')
    

    相当于完全显式的创建:

    pd.Series(data=0, index=np.arange(10), name='orders', dtype=None,
              copy=False, fastpath=False)
    

    一般情况下,您不会写出所有默认值,而仅在参数偏离默认值、是没有默认值的参数或指定默认值有助于自记录代码时才指定参数。

    【讨论】:

      【解决方案2】:

      您也可以简单地在参数中指定dtype

      class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
      

      你可以这样指定:

      Ciccio = pd.Series(dtype = 'object')
      

      这是一系列字符串的情况(您也可以将'object'用于混合值,其他有效值是int64或float64或bool ...)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多