以下は、カテゴリリストとデータセットから一致する値を抽出するためのコードです。次の結果得データフレーム列からの文字の削除
matches= token.apply(lambda x: pd.Series(x).str.extractall("|".join(["({})".format(cat) for cat in Categories.HealthCare])))
match_list= [[m for m in match.values.ravel() if isinstance(m, str)] for match in matches]
match_df = pd.DataFrame({"Hc1":match_list})
def match_health(row):
categories = []
for bigram in row.bigram:
joined = ' '.join(bigram)
if joined in HealthCare:
categories.append(joined)
for trigram in row.trigram:
joined = ' '.join(trigram)
if joined in HealthCare:
categories.append(joined)
return categories
match_df['Hc2'] = df.apply(match_health, axis=1)
match_df['HealthCare'] = match_df[match_df.columns[[0,1]]].apply(lambda x: ','.join(x.dropna().astype(str)),axis=1)
:
Hc1 Hc2 HealthCare
0 [] [] [],[]
1 [Sauna, Jacuzzi] [Health Club, Steam Room] ['Sauna', 'Jacuzzi'],['Health Club', 'Steam Ro...
2 [Sauna, Jacuzzi] [Health Club, Steam Room] ['Sauna', 'Jacuzzi'],['Health Club', 'Steam Ro...
3 [Sauna, Jacuzzi] [Health Club, Steam Room] ['Sauna', 'Jacuzzi'],['Health Club', 'Steam Ro...
タイプ(match_df)を
pandas.core.frame.DataFrame
しかし、私の出力は '[]' なしでなければなりません - 角括弧や単一引用符の周り文字列:
Hc1 Hc2 HealthCare
0
1 Sauna, Jacuzzi Health Club, Steam Room Sauna,Jacuzzi,Health Club,Steam Ro...
2 Sauna, Jacuzzi Health Club, Steam Room Sauna,Jacuzzi,Health Club,Steam Ro...
3 Sauna, Jacuzzi Health Club, Steam Room Sauna,Jacuzzi,Health Club,Steam Ro...
助けが必要です。
はそれだけで[]と '空白で置き換えるか、単にそれらを除去するのに十分ではないでしょうか? – bukart
はい、コンマ区切りに置き換えても、仕事をします –
match_df ['HealthCare'] = match_df ['HealthCare'] map(lambda x:x.replace( '['、 '')。replace( ']' 、 '')。replace( "'"、' '))これは動作しますが、データフレーム列に対してのみ有効です。一度にデータフレーム全体に適用する方法を知っていますか? –