簡體   English   中英

如何用字符串列表替換熊貓列中的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM