如果匹配,则将数据框中的单词更改为来自不同数据帧的不同单词
Change word in dataframe to different word from different dataframe if they match
我在比较数据框时遇到了一些问题。我有两个数据框,第一个有标记词。
df_1:
id sentence some more info
1 [I, am, happy] bla
2 [I, am, happier] bla
3 [I, am, the, saddest] bla
和
df_2:
id word more most
1 happy happier happiest
2 sad sadder saddest
我想做的是比较两个数据帧,如果 df_1 中的一个词与 df_2 中任何地方的一个词匹配,它将被更改为 df_2['word'] 在相应单词的行中。所以我的输出看起来像这样:
df_1
id sentence some more info new_sentence
1 [I, am, happy] bla [I, am, happy]
2 [I, am, happier] bla [I, am, happy]
3 [I, am, the, saddest] bla [I, am, the, sad]
我尝试了一些使用 .compare() 和编写函数的方法,但到目前为止似乎没有任何效果。
提前感谢您的帮助!
通过删除 id
列从第二个 DataFrame
创建字典,通过 DataFrame.melt
and DataFrame.set_index
:
重塑
d = df.drop('id', axis=1).melt('word').set_index('value')['word'].to_dict()
如果不匹配,则将 dict.get
中的值映射为 return 相同的值:
df_1['new_sentence'] = df_1['sentence'].apply(lambda x: [d.get(y, y) for y in x])
或:
d = df.drop('id', axis=1).melt('word').set_index('value')['word'].to_dict()
df_1['new_sentence'] = [[d.get(y, y) for y in x] for x in df_1['sentence']]
我在比较数据框时遇到了一些问题。我有两个数据框,第一个有标记词。
df_1:
id sentence some more info
1 [I, am, happy] bla
2 [I, am, happier] bla
3 [I, am, the, saddest] bla
和
df_2:
id word more most
1 happy happier happiest
2 sad sadder saddest
我想做的是比较两个数据帧,如果 df_1 中的一个词与 df_2 中任何地方的一个词匹配,它将被更改为 df_2['word'] 在相应单词的行中。所以我的输出看起来像这样:
df_1
id sentence some more info new_sentence
1 [I, am, happy] bla [I, am, happy]
2 [I, am, happier] bla [I, am, happy]
3 [I, am, the, saddest] bla [I, am, the, sad]
我尝试了一些使用 .compare() 和编写函数的方法,但到目前为止似乎没有任何效果。
提前感谢您的帮助!
通过删除 id
列从第二个 DataFrame
创建字典,通过 DataFrame.melt
and DataFrame.set_index
:
d = df.drop('id', axis=1).melt('word').set_index('value')['word'].to_dict()
如果不匹配,则将 dict.get
中的值映射为 return 相同的值:
df_1['new_sentence'] = df_1['sentence'].apply(lambda x: [d.get(y, y) for y in x])
或:
d = df.drop('id', axis=1).melt('word').set_index('value')['word'].to_dict()
df_1['new_sentence'] = [[d.get(y, y) for y in x] for x in df_1['sentence']]