列中所有可能的绝对成对偏差的总和



所以我有一个数据集,有两列,一列是带产品名称的字符串变量,另一列是区间值。

Affiliate_ID          Average "A" Level
store X                      7.0
store Y                      4.3
store Z                      5.6

我很好奇在python中是否可以计算并求和所有可能的成对差异,而不需要重复。

Sum = |7.0 - 4.3| + |4.3 - 5.6| + |7.0 - 5.6|

我不知道什么格式最适合python进行这样的操作,但我有csv文件和excel文件中的数据。我使用panda将数据放入数据帧中。我尝试过的一件事是从数据帧中获取一个特定的列

df = pd.DataFrame.from_csv(infile_path + "mp_viewed_item_AGG_affiliate_item_TOP_10.csv", sep=',')
i = 0
for i in df:
    x = df[i]

但这感觉是不正确的——好像它没有任何进展(我不知道!)

有人建议我使用一种名为itertools的东西,并为我提供了一个示例

sum([args[i] - args[j] for i,j in itertools.permutations(range(len(args)

但我真的不知道该怎么做。

如果有人能让我对我的问题有所了解,我将不胜感激。我是蟒蛇的新手;我知道基础知识,写过几个非常简单的程序,但我根本不是一个开发人员。

import itertools
column = [3, 1, 7, 2, 9, 4]

你可以制作一组像这样的

# You can use set() instead of list() if you want to remove duplicates
list(itertools.combinations(column,2))

输出

[(3, 1), (3, 7), (3, 2), (3, 9), (3, 4),
 (1, 7), (1, 2), (1, 9), (1, 4),
 (7, 2), (7, 9), (7, 4),
 (2, 9), (2, 4),
 (9, 4)]

然后你可以使用列表理解获得差异的总和

sum([abs(pair[1] - pair[0]) for pair in itertools.combinations(column,2)])

输出

56

像这样使用itertools.combinations

import pandas as pd
import itertools
d = {'Affiliate_ID': pd.Series(['store X', 'store Y', 'store Z']), 'Average "A" Level': pd.Series([7.0, 4.3, 5.6])}
df = pd.DataFrame(d)
print sum(abs(x - y) for x, y in itertools.combinations(df['Average "A" Level'], 2))

相关内容

  • 没有找到相关文章

最新更新