【问题标题】:Pandas: universal columns attribute for DataFrame and SeriesPandas:DataFrame 和 Series 的通用列属性
【发布时间】:2017-04-26 12:50:24
【问题描述】:

我有一个函数,它通过 DataFrame 并使用 df.columns 属性。但是,当它传递一个只有一列(系列)的 DataFrame 时,这会中断,因为系列没有该属性。

是否有一个属性适用于系列和数据框,相当于 df.columns 的 DataFrame ?我看过了,但鉴于列属性甚至没有显示在 DataFrame 文档 (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html) 中,我认为可能有一些部落知识形式的解决方案。

【问题讨论】:

    标签: python pandas dataframe attributes series


    【解决方案1】:

    .name 用于系列,我只需测试被传递对象的type 并酌情调用.columns.name

    In [242]:
    df = pd.DataFrame(columns=list('abc'))
    df
    
    Out[242]:
    Empty DataFrame
    Columns: [a, b, c]
    Index: []
    
    In [243]:
    df['a'].name
    
    Out[243]:
    'a'
    

    像这样:

    In [245]:
    def func(x):
        if type(x) is pd.DataFrame:
            print( x.columns)
        elif type(x) is pd.Series:
            print( x.name)
    
    print(func(df))
    print(func(df['a']))
    
    Index(['a', 'b', 'c'], dtype='object')
    None
    a
    None
    

    【讨论】:

    • 这很有帮助,但与我目前的 n 行代码相比,它需要 2+2n 行代码。真的没有其他解决方案了吗?
    • 不是真的,这里没有一个共同的属性,因为它们是根本不同的类型,可以通过 df[['a']] 传递单列 df 这将传递单列 df
    猜你喜欢
    • 2019-04-23
    • 2018-02-05
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2011-07-17
    • 2015-07-25
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多