我有以下數據框:蟒蛇 - 通過數據幀列作爲參數的應用功能
In[1]: df = DataFrame({"A": ['I love cooking','I love rowing'], "B": [['cooking','rowing'],['cooking','rowing']]})
因此我得到的輸出是:
In[2]: df
Out[1]:
A B
0 I love cooking [cooking, rowing]
1 I love rowing [cooking, rowing]
我想創建一個「C」柱我計算'A'中'B'元素的出現次數。
創建功能是:
def count_keywords(x,y):
a = 0
for element in y:
if element in x:
a += 1
return a
然後執行:
df['A'].apply(count_keywords,args=(df['B'],))
在這種情況下,我傳遞整個大熊貓dataseries作爲參數,所以dataseries DF的元素[ 'B']顯然是一個列表,而不是一個字符串(這又是列表的元素)。
所以我得到:
TypeError: 'in <string>' requires string as left operand, not list
但是,如果我調整功能,使:
def count_keywords(x,y):
a = 0
for element in y:
for new_element in element:
if new_element in x:
a += 1
return a
然後執行:
In[3]: df['A'].apply(count_keywords,args=(df['B'],))
輸出爲:
Out[2]:
0 2
1 2
因爲函數循環遍歷熊貓系列中的每個元素,然後遍歷列表中的每個元素。
我該如何獲得函數來檢查每個數據幀行,對系列df ['A']中的元素進行系列df ['B']的元素檢查,因此輸出結果爲:?
Out[2]:
0 1
1 1
非常感謝!
大忠告VMG的,我看到你傳遞的行而不是列。很有意義。 –