从python中的pandas Series和DataFrames获取字符串?

13 python pandas

我在熊猫中有这个数据框:

d=pandas.DataFrame([{"a": 1, "b": 1}, {"c": 2, "b": 4}])
d["name"] = ["Hello", "World"]
Run Code Online (Sandbox Code Playgroud)

我想根据"name"列中的字符串值选择一个元素,然后将该值作为字符串获取.要选择元素:

d[d["name"] == "World"]["name"]
Out:
1    World
Name: name
Run Code Online (Sandbox Code Playgroud)

问题是它不提供简单的字符串而是一系列字符串.转换为字符串无济于事 - 我怎样才能从中获取字符串"World"?这是唯一的方法吗?

d[d["name"] == "World"]["name"].values[0]
Run Code Online (Sandbox Code Playgroud)

谢谢.

Bla*_*g23 15

有一种方法没有人提到可能值得注意的方法.这是我遇到的一个问题,我正在进行多项标准检查并返回单个项目系列(基本上是一个独特的行结果).如果系列中只有一个项目,只需要该项目,或者知道要收集的特定项目的索引,请执行以下操作:

d[d["name"] == "World"].tolist()[0]
Run Code Online (Sandbox Code Playgroud)

对于单个项目系列中的第一个(也是唯一的)项目.

或这个:

d[d["name"] == "World"].tolist()[index]
Run Code Online (Sandbox Code Playgroud)

index系列中您要查找的项目的索引在哪里.

如果您希望它作为字符串,如果默认情况下尚未进行字符串化,则可能必须转换为字符串.

  • 感谢您的分享。我不敢相信没有更容易调用的函数。 (3认同)

And*_*den 8

正如@DSM指出的那样,一般情况下可能会有许多行名称'World',所以我们需要选择一行.

一种看起来很好的方法可能是使用where(然后max):

In [11]: d.name.where(d.name == 'World', np.nan)
Out[11]: 
0      NaN
1    World
Name: name, dtype: object

In [12]: d.name.where(d.name == 'World', np.nan).max()
Out[12]: 'World'
Run Code Online (Sandbox Code Playgroud)

注意:如果没有名称为"World"的行,则返回NaN.