我有一个类似的问题,在以下参考中提供的链接有微小的差异,但希望相同的结果:
- Apply fuzzy matching across a dataframe column and save results in a new column
- Fuzzy match strings in one column and create new dataframe using fuzzywuzzy
我有一个dataframe,我想得到dataframe中两列之间的部分比率和令牌。第1列每行只有一个单词,但第2列是一个单词列表,每行的大小不同(我将其改为元组,以使参考文献中的函数正常工作)。
我遇到的主要问题是,在比较过程中,它会遍历第1列,并将每个元素与第2列中的每个元素进行比较,从而创建了一个庞大的 Dataframe ,而我只希望它是1比1。我该如何解决这个问题?
df = pd.DataFrame(
{
"id": [1, 2, 3, 4, 5, 6],
"fruits": ["apple", "apples", "orange", "apple tree", "oranges", "mango"],
"choices": [
("app", "apull", "apple"),
("app", "apull", "apple", "appple"),
("orange", "org"),
("apple"),
("oranges", "orang"),
("mango"),
],
}
)
id fruits choices
0 1 apple ('app', 'apull', 'apple')
1 2 apples ('app', 'apull', 'apple', 'appple')
2 3 orange ('orange', 'org')
3 4 apple tree ('apple')
4 5 oranges ('oranges', 'orang')
5 6 mango ('mango')
在变量资源管理器中,compare提供了什么:
compare = pd.MultiIndex.from_product([df['fruits'], df['choices']]).to_series()
fruits choices
0 apple ('app', 'apull', 'apple')
1 apple ('app', 'apull', 'apple', 'appple')
2 apple ('orange', 'org')
3 apple ('apple')
4 apple ('oranges', 'orang')
5 apple ('mango')
6 apples ('app', 'apull', 'apple')
7 apples ('app', 'apull', 'apple', 'appple')
8 apples ('orange', 'org')
...
是否可以获得像参考文献1中的第一个输出一样的所需输出,但选择的是多索引元素?
预期输出如参考#1,但我希望选择多索引:
1条答案
按热度按时间f87krz0w1#
以下是使用Pandasexplode和groupby的一种方法:
然后道: