1
をチェックすることにより、データフレーム内の要素を変更:私は辞書を使用して、リスト内の要素を分類しようとしています辞書
mydict = {'beach': ['beach', 'sand', 'coast'], 'package': ['package', 'inclusive']}
与えられたデータフレーム:
Keyword |cat |
--------------------------------|----|
beach holiday | |
package beach holiday | |
inclusive beach holiday | |
私はそれかどうかを確認したいです要素が辞書にある場合は、キーワードをカテゴリ列に適用します。例:
Keyword |cat |
--------------------------------|----|
beach holiday |beach |
package beach holiday |package|
inclusive package beach holiday |package|
私はattを持っています次のコードで割り込む:しかし、これは単なる空のカテゴリリストを与える
df = get_csv(csv)
mydict = {'beach': ['beach', 'sand', 'coast'], 'package': ['package', 'inclusive']}
for key in mydict.keys():
item = key
if item in mydict[key]:
target_cats = item
find_keywords = lambda kw: [s for s in kw.split() if s in target_cats]
df.loc[:, 'cat_list'] = df['Keyword'].apply(lambda x: find_keywords(x))
for i in range(1, 4):
df.loc[:, 'cat{0}'.format(i)] = df['cat_list'].apply(lambda x: x[i-1] if len(x) >= i else '')
print(df)
df.to_csv('kuoniTesting.csv')
、リストに対してチェックするためのコードは動作しますが、どのように私は辞書を使用するために、これを修正するのですか?
target_cats = ['cat', 'dog', 'cow']
df = pd.DataFrame({'Keyword': ['cat dog cow', 'cat dog', 'dog sheep']})
find_keywords = lambda kw: [s for s in kw.split() if s in target_cats]
df.loc[:, 'cat_list'] = df['Keyword'].apply(lambda x: find_keywords(x))
for i in range(1, 4):
df.loc[:, 'cat{0}'.format(i)] = df['cat_list'].apply(lambda x: x[i-1] if
len(x) >= i else '')
Keyword cat_list cat1 cat2 cat3
0 cat dog cow [cat, dog, cow] cat dog cow
1 cat dog [cat, dog] cat dog
2 dog sheep [dog] dog