我想撰寫一個腳本來識別單詞(字串)多次出現在 pandas 資料框的一行中的實體。
使用 lambda 函式,我可以識別一行中是否存在一個字串,但是我找不到任何關于如何識別字串的“2個或多個”實體的資訊,這是我目前擁有的一個例子:
df = pd.DataFrame({'ID':[1,2,3],'Ans1':['Yes','Yes','Yes'],'Ans2':['No','Yes','No'],'Ans3':['No','No','No']})
df['Result'] = df.apply(lambda row: row.astype(str).str.contains('Yes').any(), axis=1)
df
我想要得到的偽代碼:
if 'Yes' isin row > 1:
df['Results'] == True
期望的結果:
ID Ans1 Ans2 Ans3 Result
1 Yes No No False
2 Yes Yes No True
3 Yes No No False
uj5u.com熱心網友回復:
試試看,如果您不想檢查整個資料幀是否是,可以進行列過濾,然后使用eq, 等于和sumwith axis=1 對行中的值求和,然后檢查該總和是否gt大于 1 :
df['Result'] = df.eq('Yes').sum(1).gt(1)
輸出:
ID Ans1 Ans2 Ans3 Result
0 1 Yes No No False
1 2 Yes Yes No True
2 3 Yes No No False
uj5u.com熱心網友回復:
你也可以這樣做:
df['Result'] = df[df == 'Yes'].count(axis=1).gt(1)
uj5u.com熱心網友回復:
此代碼應該為您的特定情況解決問題。它從字面上實作了每一行的偽代碼。
def check_row(row):
count = 0
for i in row:
if i == 'Yes':
count = 1
if count > 1:
return True
else:
return False
df['Results'] = df.apply(check_row, axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/426290.html
上一篇:在Python中,如何使優先級佇列彈出一個物件的多個值?
下一篇:雖然條件沒有破壞
