對python相當陌生。這似乎是一個非常簡單的問題,但我找不到任何有關它的資訊。我有一個字串串列,對于每個字串,我想檢查它是否存在于資料框中(實際上是在資料框的特定列中。不是子字串是否存在,而是整個確切的字串。
所以我的資料框如下所示:
A=pd.DataFrame(["ancestry","time","history"])
我應該能夠簡單地使用“資料框中的字串”方法,如
"time" in A
然而,這將回傳 False。如果我跑
"time" == A.iloc[1]
它回傳“True”,但令人討厭的是作為系列的一部分,這取決于知道相應字串在資料幀中的位置。有什么方法可以讓我在 df 方法中使用字串,輕松找出串列中的字串是否在資料框中?
uj5u.com熱心網友回復:
添加.values到最后:
'time' in A.values
正如您所注意到的,x in pandas.DataFrame語法不會產生您想要的結果。但是.values將資料框轉換為 Numpy 陣列,并按x in numpy.array預期作業。
uj5u.com熱心網友回復:
處理這個問題的方法是將整個資料框與"time". 這將回傳一個掩碼,其中 DF 的每個值如果是 則為 True time,否則為 False。然后,您可以使用.any()檢查是否有任何 True 值:
>>> A = pd.DataFrame(["ancestry","time","history"])
>>> A
0
0 ancestry
1 time
2 history
>>> A == "time" # or A.eq("time")
0
0 False
1 True
2 False
>>> (A == "time").any()
0 True
dtype: bool
請注意,在上面的輸出中,(A == "time").any()回傳一個 Series,其中每個條目都是一列,并且該列是否包含time. 如果要檢查整個資料框(跨所有列),請呼叫.any()兩次:
>>> (A == "time").any().any()
True
uj5u.com熱心網友回復:
我相信(myseries==mystr).any()會做你所要求的。DataFrames的特殊__contains__方法(通知 的行為in)檢查您的字串是否是 DataFrame 的列,例如
>>> A = pd.DataFrame({"c": [0,1,2], "d": [3,4,5]})
>>> 'c' in A
True
>>> 0 in A
False
uj5u.com熱心網友回復:
我會稍微修改您的資料框并使用 .str.contains 檢查字串在您的系列中的位置。
df=pd.DataFrame()
df['A']=pd.Series(["ancestry","time","history"])
df['A'].str.contains("time")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472057.html
上一篇:聚合串列中為真的列名
