Это потому, что когда вы делаете:
bowA = df["Lang_1_text"].str.split(" ")
bowB = df["Lang_2_text"].str.split(" ")
, bowA и bowB будут объектами серии.Вы можете проверить, напечатав их.Это будет выглядеть так:
>> type(bowA)
>> pandas.core.series.Series
>> type(bowA[0])
>> list
И каждый элемент в Серии будет списком.Когда вы приводите его к set (), он вызывает ошибку TypeError.Пример:
>> set([1,2,3]) # runs fine
>> set([[1],2,3]) # will raise the same error - TypeError: unhashable type: 'list'
Вы, вероятно, должны сделать что-то вроде ниже:
>> data = {"Lang_1_text": ['strike kirsten chlodowski file exchange'], "Lang_2_text": ['kirsten exchange outlook freeze']}
>> df = pd.DataFrame(data) # Assuming `df` is the format you have
>> # Now split it on space " "; and cast them as `set()` you can user `applymap`
>> # https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.applymap.html
>> data_1 = df.applymap(lambda x: set(x.split(" ")))
>> # Calculate the `union` data
>> union_data = data_1.apply(lambda x: x['Lang_1_text'].union(x['Lang_2_text']), axis=1)
>> print union_data.values[0] # Or list(union_data.values[0]) to make it a list
>> {'chlodowski', 'exchange', 'file', 'freeze', 'kirsten', 'outlook', 'strike'}
Надеюсь, это поможет!