从数据框或系列的熊猫输出中删除名称、dtype

Posted

技术标签:

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

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

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

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

race
gender

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于从数据框或系列的熊猫输出中删除名称、dtype的主要内容,如果未能解决你的问题,请参考以下文章

删除熊猫中的索引名称

如何从系列中删除索引 col? [复制]

删除熊猫系列中的空列表

熊猫数据框可以有列表的dtype吗?

从 infosql 输出中删除测量名称

如何从熊猫数据框中的字符串项中删除数字