从数据框或系列的熊猫输出中删除名称、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_string
有name=False
和dtype=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的主要内容,如果未能解决你的问题,请参考以下文章