的比方說,我有這樣一個數據幀:熊貓 - 檢查字符串列包含一對字符串
df = pd.DataFrame({'consumption':['squirrel eats apple', 'monkey eats apple',
'monkey eats banana', 'badger eats banana'],
'food':['apple', 'apple', 'banana', 'banana'],
'creature':['squirrel', 'badger', 'monkey', 'elephant']})
consumption creature food
0 squirrel eats apple squirrel apple
1 monkey eats apple badger apple
2 monkey eats banana monkey banana
3 badger eats banana elephant banana
我想找到其中「生物」 &「食物」組合出現在列'消費'一欄,即如果蘋果和松鼠一起出現,則爲真,但如果蘋果與大象一起出現則爲假。同樣,如果猴子&香蕉一起出現,那麼True,但猴子蘋果會是假的。
我嘗試的方法是這樣的:
creature_list = list(df['creature'])
creature_list = '|'.join(map(str, creature_list))
food_list = list(df['food'])
food_list = '|'.join(map(str, food_list))
np.where((df['consumption'].str.contains('('+creature_list+')', case = False))
& (df['consumption'].str.contains('('+food_list+')', case = False)), 1, 0)
但是,這因爲我得到在所有情況下真不起作用。
如何檢查字符串對?
嘿@foglerit感謝,問題 - 如果的r [「消費」]'是另一個數據幀說'X [「消費」] '和我修改函數添加參數中的x,這仍然工作? – vagabond
只是試着用兩個數據框,並得到這個錯誤:'TypeError:'系列'對象是可變的,因此他們不能被哈希',但你的答案是正確的基於我問的問題。在我的問題中,我沒有完全解決這個問題。 – vagabond
@vagabond,如果'consumption'在另一個數據框中,則需要先合併這兩個DF,然後才能應用此方法。 – foglerit