Python 熊猫:每行取一个字符串,用逗号分隔,并向列表中添加唯一的单词
样本df:Python 熊猫:每行取一个字符串,用逗号分隔,并向列表中添加唯一的单词,python,pandas,dataframe,split,Python,Pandas,Dataframe,Split,样本df: filldata = [['5,Blue,Football', 3], ['Baseball,Blue,College,1993', 4], ['Green,5,Football', 1]] df = pd.DataFrame(filldata, columns=['Tags', 'Count']) 我想要一个在标签列中使用的单词的唯一列表。因此,我尝试通过df循环并拉取每一行标记,在上拆分,并将单词添加到列表中。我可以检查并只添加唯一的单词,也可以将它们全部添加,然后拉唯一。如果
filldata = [['5,Blue,Football', 3], ['Baseball,Blue,College,1993', 4], ['Green,5,Football', 1]]
df = pd.DataFrame(filldata, columns=['Tags', 'Count'])
我想要一个在标签
列中使用的单词的唯一列表。因此,我尝试通过df循环并拉取每一行标记
,在上拆分,
并将单词添加到列表中。我可以检查并只添加唯一的单词,也可以将它们全部添加,然后拉唯一。如果可能的话,我想要两种方法的解决方案,看看哪种更快。因此,预期产出应为:
5,蓝色,足球,棒球,大学,1993年,绿色
我试过这些:
tagslist = df['Tags'][0].split(',') # To give me initial starting words
def adduniquetags(newtags, tagslist):
thesetags = newtags.split(',')
tagslist = tagslist.extend(thesetags)
return tagslist
tagslist = [adduniquetags(row, tagslist) for row in df['Tags']]
及
这两个词本质上是相同的,其中一个只寻找独特的词。这两者都返回一个“无”列表。我也试过:
tagslist = df['Tags'][0].split(',')
def adduniquetags(newtags, tagslist):
thesetags = newtags.split(',')
tagslist = list(set(tagslist + thesetags))
return tagslist
tagslist = [adduniquetags(row, tagslist) for row in df['Tags']]
这是为每行添加唯一值,但不是每行中的单词。因此,即使我尝试在,
上拆分,它仍然将整个文本视为一个文本,而不是使用字符串中的单个单词。用于拆分字符串,然后使用来水平堆叠列标记中的所有列表,接下来在这个堆叠数组中使用,以查找数组中的唯一元素
lst = np.unique(np.hstack(df['Tags'].str.split(','))).tolist()
另一个可能的想法是使用+:
结果:
['1993', '5', 'Baseball', 'Blue', 'College', 'Football', 'Green']
lst = df['Tags'].str.split(',').explode().unique().tolist()
['1993', '5', 'Baseball', 'Blue', 'College', 'Football', 'Green']