[英]how can I replace elements in a pandas column by a list of strings
我創建了一個數據框列來存儲主題標簽,該列的每一行都是一個字符串列表,如下所示:
df.hashtag
0 [#MondayMotivation, #BlackMamba, #RIPMamba, #c...
1 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
2 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
3 [#RoomOfMystery, #BuenLunes, #GRAMMYs, #27Ene,...
4 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
5 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
我的意思是,df.hashtag 的每一行都是一個這樣的列表:
df.hashtag[0]
['#MondayMotivation',
'#BlackMamba',
'#RIPMamba',
'#coronavirus',
'#love',
'#Califórnia']
如您所見,有許多相似的主題標簽代表相同的含義,例如#COV_19
和#COVID_19
,所以我想將這些元素替換為相同的字符串#COVID19
所以我創建了一個格式不正確的主題標簽列表。 像這樣:
token = ['#Covid_19',
'#covid2019',
'#covid19',
'#covid_19',
'#COVid',
'#COVID__19']
然后我嘗試了替換方法但失敗了。
df.replace(token,'#COVID-19',inplace=True)
如何將這些主題標簽替換為我想要的字符串?
您可以執行以下操作。 如果要替換更多元素,請添加類似的行。
token = ['#Covid_19',
'#covid2019',
'#covid19',
'#covid_19',
'#COVid',
'#COVID__19']
l=list(df.hashtag)
for i in range(len(l)):
l[i]=['#COVID19' if x in token else x for x in l[i]]
df.hashtag=l
這是一個解決方案,First Series.explode
然后創建一個令牌字典作為鍵和"#COVID_19"
作為值,最終replace
groupby
以獲取原始值。
(df.hashtag.explode().replace({t : "#COVID_19" for t in token})
.groupby(level=0).apply(list))
或者
for t in token:
df['hashtag'] = df['hashtag'].str.replace(t, '#COVID19')
另一個建議是,對於令牌列表的此類實例,您可能需要清理數據,例如將所有主題標簽大寫、刪除特殊字符並將年份替換為固定格式。 這樣你的令牌列表更小,循環更短。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.