[英]getting string from pandas Series and DataFrames in python?
我在熊貓中有這個數據框:
d=pandas.DataFrame([{"a": 1, "b": 1}, {"c": 2, "b": 4}])
d["name"] = ["Hello", "World"]
我想根據“名稱”列中的字符串值選擇一個元素,然后將值作為字符串獲取。 要選擇元素:
d[d["name"] == "World"]["name"]
Out:
1 World
Name: name
問題是它沒有給出一個簡單的字符串,而是一個系列。 轉換為字符串無濟於事——我怎樣才能從中得到字符串"World"
? 這是唯一的方法嗎?
d[d["name"] == "World"]["name"].values[0]
謝謝。?
有一種沒有人提到的方法可能值得注意。 這是我在進行多項標准檢查並取回單個項目系列(基本上是唯一的行結果)時遇到的問題。 如果您在系列中有一個項目並且只需要該項目或知道您要收集的特定項目的索引,請執行以下操作:
d[d["name"] == "World"].tolist()[0]
對於單個項目系列中的第一個(也是唯一一個)項目。
或這個:
d[d["name"] == "World"].tolist()[index]
其中index
是您在系列中查找的項目的索引。
如果您希望將其作為字符串,並且默認情況下尚未將其字符串化,則可能必須將其轉換為字符串。
正如@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'
注意:如果沒有名稱為“World”的行,這將返回 NaN。
更新:不推薦,因為它會截斷長文本,除非使用 pandas > 1.0(未測試)
不確定這適用於哪些版本的 Pandas,但它是另一種選擇:
d[d["name"] == "World"].to_string(index=False)
如果不止一行,還有其他選項:
max_rows int, optional
截斷前顯示的最大行數。 如果沒有,則顯示全部。
min_rows int, optional
在截斷的 repr 中顯示的行數(當行數高於 max_rows 時)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.