从 pandas 数据框中仅提取一个字符串元素

Extracting just a string element from a pandas dataframe

好吧,假设我有一个 pandas 数据框 x,我有兴趣从中提取一个值:

> x.loc[bar==foo]['variable_im_interested_in']

假设 returns 以下 pandas.core.series.Series 类型:

24    Boss
Name: ep_wb_ph_brand, dtype: object

但我想要的只是字符串 'Boss'。将第一行代码包装在 str() 中也无济于事,我只是得到:

'24    Boss\nName: ep_wb_ph_brand, dtype: object'

如何提取字符串?

您可以使用 string.split 函数。

>>> s = '24    Boss\nName: ep_wb_ph_brand, dtype: object'
>>> s.split()[1]
'Boss'

根据您的评论,此代码返回长度为 1 pandas 系列:

x.loc[bar==foo]['variable_im_interested_in']

如果您将此值赋给一个变量,那么您只需访问第 0 个元素即可获得您要查找的内容:

my_value_as_series = x.loc[bar==foo]['variable_im_interested_in']

# Assumes the index to get is number 0, but from your example, it might
# be 24 instead.
plain_value = my_value_as_series[0]

# Likewise, this needs the actual index value, not necessarily 0.
also_plain_value = my_value_as_series.ix[0]

# This one works with zero, since `values` is a new ndarray.
plain_value_too = my_value_as_series.values[0]

没有 分配给变量来执行此操作,因此您可以只写 x.loc[bar==foo]['variable_im_interested_in'][0] (或其他选项类似),但是临时填词越来越多的访问器和奇特的索引语法到单个表达式通常不是一个好主意。

另请注意,您可以在对 loc:

的调用中直接索引感兴趣的列
x.loc[bar==foo, 'variable_im_interested_in'][24]

获取数组最后一个值的代码(运行 在 Jupyter notebook 中,用 >s 标记):

> import pandas
> df = pandas.DataFrame(data=['a', 'b', 'c'], columns=['name'])
> df
    name
0   a
1   b
2   c
> df.tail(1)['name'].values[0]
'c'