总结数据框中的重复二元组
Sum duplicate bigrams in dataframe
我目前有一个包含以下值的数据框:
Bigram Frequency
0 (ice, cream) 23
1 (cream, sandwich) 21
2 (google, android) 19
3 (galaxy, nexus) 14
4 (android, google) 12
我想合并其中的值(如 google、android 和 android、google)还有其他值,如“冰、奶油”和“奶油,三明治”,但这是一个不同的问题。
为了总结我尝试这样做的重复项:
def remove_duplicates(ngrams):
return {" ".join(sorted(key.split(" "))):ngrams[key] for key in ngrams}
freq_all_tw_pos_bg['Word'] = freq_all_tw_pos_bg['Word'].apply(remove_duplicates)
我环顾四周,发现了类似的练习,这些练习被标记为正确答案,但当我尝试这样做时,我得到:
TypeError: tuple indices must be integers or slices, not str
这是有道理的,但后来我尝试将其转换为字符串,但它以一种奇怪的方式打乱了双字母组,所以我想知道,我是否遗漏了一些应该更容易的东西?
编辑:
输入是我显示的第一个值。一些重复的二元组列表(由于其中的单词被颠倒了。即 google、android 与 android、google
我想要相同的输出(即带有双字母组的数据帧),但它总结了反向单词的频率。如果我从上面获取相同的列表并处理它,那么它应该输出。
Bigram Frequency
0 (ice, cream) 23
1 (cream, sandwich) 21
2 (google, android) 31
3 (galaxy, nexus) 14
4 (apple, iPhone) 6
请注意它是如何“合并”(google、android) 和 (android、google) 以及对频率求和的。
如果有 ara 元组使用 sorted
转换为元组:
freq_all_tw_pos_bg['Bigram'] = freq_all_tw_pos_bg['Bigram'].apply(lambda x:tuple(sorted(x)))
print (freq_all_tw_pos_bg)
Bigram Frequency
0 (cream, ice) 23
1 (cream, sandwich) 21
2 (android, google) 31
3 (galaxy, nexus) 14
4 (apple, iPhone) 6
然后聚合sum
:
df = freq_all_tw_pos_bg.groupby('Bigram', as_index=False)['Frequency'].sum()
我目前有一个包含以下值的数据框:
Bigram Frequency
0 (ice, cream) 23
1 (cream, sandwich) 21
2 (google, android) 19
3 (galaxy, nexus) 14
4 (android, google) 12
我想合并其中的值(如 google、android 和 android、google)还有其他值,如“冰、奶油”和“奶油,三明治”,但这是一个不同的问题。
为了总结我尝试这样做的重复项:
def remove_duplicates(ngrams):
return {" ".join(sorted(key.split(" "))):ngrams[key] for key in ngrams}
freq_all_tw_pos_bg['Word'] = freq_all_tw_pos_bg['Word'].apply(remove_duplicates)
我环顾四周,发现了类似的练习,这些练习被标记为正确答案,但当我尝试这样做时,我得到:
TypeError: tuple indices must be integers or slices, not str
这是有道理的,但后来我尝试将其转换为字符串,但它以一种奇怪的方式打乱了双字母组,所以我想知道,我是否遗漏了一些应该更容易的东西?
编辑: 输入是我显示的第一个值。一些重复的二元组列表(由于其中的单词被颠倒了。即 google、android 与 android、google
我想要相同的输出(即带有双字母组的数据帧),但它总结了反向单词的频率。如果我从上面获取相同的列表并处理它,那么它应该输出。
Bigram Frequency
0 (ice, cream) 23
1 (cream, sandwich) 21
2 (google, android) 31
3 (galaxy, nexus) 14
4 (apple, iPhone) 6
请注意它是如何“合并”(google、android) 和 (android、google) 以及对频率求和的。
如果有 ara 元组使用 sorted
转换为元组:
freq_all_tw_pos_bg['Bigram'] = freq_all_tw_pos_bg['Bigram'].apply(lambda x:tuple(sorted(x)))
print (freq_all_tw_pos_bg)
Bigram Frequency
0 (cream, ice) 23
1 (cream, sandwich) 21
2 (android, google) 31
3 (galaxy, nexus) 14
4 (apple, iPhone) 6
然后聚合sum
:
df = freq_all_tw_pos_bg.groupby('Bigram', as_index=False)['Frequency'].sum()