2017-01-17 35 views
0

我有一個熊貓腳本,我得到一個Excel工作表,並把它放在一個大熊貓據幀,然後我期待在這個數據幀爲一個特定的單詞,然後我創建一個df的1和0的掩碼,在那裏我找到這個單詞。Python的大熊貓錯誤:大熊貓只能使用名爲.str訪問字符串值

我沒有爲Excel工作表的特定格式,所以我得到的所有信息原樣,我期待這個詞,並創建這一行面具,其產生錯誤:

mask = np.column_stack([df[col].str.find(word) for col in df.columns.tolist()]).astype(int) 

這條線有時產生此錯誤:

pandas can only use .str accessor with string values, which use np.object_ dtype in pandas

任何想法,爲什麼和如何使它發揮作用?

謝謝

+0

嘗試'df.select_dtypes([np.object])。columns.tolist,而不是'df.columns.tolist()'在列表理解()'。現在,您正在選擇所有可能混合在一起的「dtypes」列。你只需要將它限制在'str.find()'函數的字符串中就可以正常工作。 –

回答

1

可以使用applymaplambda功能,數據幀轉換爲掩碼。 如果df是你的輸入數據框,你可以做以下的所有字段轉換爲1如果字符串word是它或0其他。

mask = df.applymap(lambda x: 1 if word in str(x) else 0)