我有以下代码作为示例(这是基于文本定义的成对相似性):
import pandas as pd
df = pd.read_csv("pairings.csv")
sample_list = df['fruit'].tolist()
sample_list的输出如下所示:
['Apple, Orange', 'Pear, Apple, Grape',
'Plum, Orange, Pear, Banana, Grape, Apple']
我再次任意选择水果作为例子,我的实际数据集基于余弦相似性找到技术之间的分组,并基于它们的定义产生技术的分组。
我试过了
for n in range(len(sample_list) + 1):
list_combinations += list(combinations(sample_list,n))
print(list_combinations)
和
for i in sample_test:
res = [(a, b) for idx, a in enumerate(sample_test) for b in sample_test[idx + 1:]]
但它们并没有奏效。我的目标是得到一个新的csv,它显示列表中每个列表的所有对,因此它将读作(括号不会在那里,这只是为了进一步解释):
0 1
0 Apple Orange [from list 1]
1 Pear Apple [from list 2]
2 Pear Grape [from list 2]
3 Apple Grape [from list 2]
4 Plum Orange [from list 3]
5 Plum Pear [from list 3]
6 etc.
我需要知道如何遍历每个列表并获得所有可能的对。谢谢!
2条答案
按热度按时间zzoitvuj1#
在调用
combinations
之前,需要将字符串拆分为一个列表。输出:
8ehkhllq2#
我认为这是一个两步的问题。首先,将字符串内部列表转换为下面的列表(使用
[elem.strip() for elem in stringylist.split(',')]
)。然后,从该内部列表中找到所有元素对。我们可以编写自己的方法来实现这一点,或者我们可以使用
itertools.combinations
来实现这一点。我选择使用下面的itertools。这解决了迭代并找到所有对的问题。我想你可以从一个对列表转换为CSV?