【问题标题】:Remove name, dtype from pandas output of dataframe or series从数据框或系列的熊猫输出中删除名称、dtype
【发布时间】:2015-06-21 02:44:48
【问题描述】:

我有来自 pandas 函数的这样的输出文件。

Series([], name: column, dtype: object)
311     race
317     gender
Name: column, dtype: object

我正在尝试仅使用第二列获得输出,即

race
gender

通过删除顶行和底行,第一列。我该怎么做?

【问题讨论】:

    标签: python pandas dataframe series output-formatting


    【解决方案1】:

    您只需要.values 属性:

    In [159]:
    
    s = pd.Series(['race','gender'],index=[311,317])
    s
    Out[159]:
    311      race
    317    gender
    dtype: object
    In [162]:
    
    s.values
    Out[162]:
    array(['race', 'gender'], dtype=object)
    

    您可以转换为列表或访问每个值:

    In [163]:
    
    list(s)
    Out[163]:
    ['race', 'gender']
    
    In [164]:
    
    for val in s:
        print(val)
    race
    gender
    

    【讨论】:

    • to_string 答案相比,这是一个黑客攻击。
    • to_string() 相比,这是一个 hack,它允许对名称、索引、标题、长度、dtype、float_format 和 na_rep、max_rows 和 min_rows 进行更细粒度的控制。
    【解决方案2】:

    DataFrame/Series.to_string

    这些方法具有多种参数,可让您配置打印时显示的信息和方式。默认Series.to_stringname=Falsedtype=False,所以我们额外指定index=False

    s = pd.Series(['race', 'gender'], index=[311, 317])
    
    print(s.to_string(index=False))
    #   race
    # gender
    

    如果索引很重要,则默认为index=True

    print(s.to_string())
    #311      race
    #317    gender
    

    Series.str.cat

    当您不关心索引并且只希望值左对齐 cat 和 '\n' 时。值需要是字符串,所以如果需要先转换。

    #s = s.astype(str)
    
    print(s.str.cat(sep='\n'))
    #race
    #gender
    

    【讨论】:

    • 我喜欢这是明确的,但它在我的字符串开头留下了空格。在我的情况下,我可以使用 strip() 将其删除,但如果您的数据框元素实际上以空格开头,那可能很危险。
    • @craq 好点。如果您不需要索引,则索引的默认左对齐和值的右对齐使得很难使用 to_string 方法获得正确的对齐相反Series.str.cat 是最好的解决方案,因为它将保留初始空格,如果有的话
    • 我建议您添加 to_string() 允许对名称、索引、标题以及长度、dtype、float_format 和 na_rep、max_rows 和 min_rows 进行更细粒度的控制。 ——
    【解决方案3】:

    有时我会print(*s, sep='\n'):

    s = pd.Series(['race', 'gender'], index=[311, 317])
    print(*s, sep='\n')
    

    给予

    race
    gender
    

    【讨论】:

      最近更新 更多