我正在尝试用列表“名称”和“引理”替换数据框中的子字符串。只要我手动输入列表,代码就会在数据帧m中传递结果。
name=['Charge','charge','Prepaid']
lemma=['Hallo','hallo','Hi']
m=sdf.replace(regex= name, value =lemma)
一旦我从excel文件中读取了两个列表,我的代码就不再替换子字符串了。我需要使用一个excel文件,因为列表在一个很大的表中。
sdf= pd.read_excel('training_data.xlsx')
synonyms= pd.read_excel('synonyms.xlsx')
lemma=synonyms['lemma'].tolist()
name=synonyms['name'].tolist()
m=sdf.replace(regex= name, value =lemma)
感谢您的帮助!
答案 0 :(得分:0)
df.replace()
用值替换to_replace中给出的值。
DataFrame的值动态地替换为其他值。这与使用.loc或.iloc进行更新不同,后者需要您指定要使用某些值进行更新的位置。
简而言之,该方法不会在序列级别上进行更改,而只会在值上进行更改。
这可以实现您想要的:
sdf.regex = synonyms.name
sdf.value = synonyms.lemma
答案 1 :(得分:0)
如果您只是想将“ Charge”替换为“ Hallo”,将“ charge”替换为“ hallo”,将“ Prepaid”替换为“ Hi”,则可以使用repalce()
并将单词列表传递给find作为第一个参数,要替换为的单词列表作为第二个关键字参数value
。
尝试一下:
df=df.replace(name, value=lemma)
示例:
name=['Charge','charge','Prepaid']
lemma=['Hallo','hallo','Hi']
df = pd.DataFrame([['Bob', 'Charge', 'E333', 'B442'],
['Karen', 'V434', 'Prepaid', 'B442'],
['Jill', 'V434', 'E333', 'charge'],
['Hank', 'Charge', 'E333', 'B442']],
columns=['Name', 'ID_First', 'ID_Second', 'ID_Third'])
df=df.replace(name, value=lemma)
print(df)
输出:
Name ID_First ID_Second ID_Third
0 Bob Hallo E333 B442
1 Karen V434 Hi B442
2 Jill V434 E333 hallo
3 Hank Hallo E333 B442