首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较一个数据文件的所有行

如何比较一个数据文件的所有行
EN

Stack Overflow用户
提问于 2021-06-27 10:57:14
回答 1查看 38关注 0票数 1

我有一个这样的数据:

代码语言:javascript
复制
Customer A B
[Boby    1 2]
[Alan    5 3]
[Tom     7 1]

注意:例如,这只是dataframe的一部分(只有几千行,几十列)。

对于每对顾客,我需要找出A和B每一行差的平方和。

Boby计算实例:(1-5)^2+ (2-3) ^ 2) = 16 +1= 17

Boby-Tom ((1-7) ^2+ (2-1) ^ 2) = 36 +1= 37

((5-7) ^2+ (3-1) ^ 2) =4+4=8

问题1:我如何做这样的计算?

我试着搜索,但是有一些循环的例子,我找不出它们:

问题2:我应该以什么形式存储这样的视图?

我认为在形式上:

代码语言:javascript
复制
Сustomer1 Сustomer2 Sum
Boby       Alan      17
Boby       Tom       37
Alan       Tom        8

如果问题不清楚,需要任何解释,请在评论中告诉我。

EN

回答 1

Stack Overflow用户

发布于 2021-06-27 11:15:53

单程:

创建所有可能的组合:

代码语言:javascript
复制
from itertools import combinations
df1 = pd.DataFrame((combinations(df.Customer, 2)),
                   columns=['Customer1', 'Customer2'])

评估总额(方法1):

代码语言:javascript
复制
df1['sum'] = df1.apply(lambda x: x.map(df.set_index('Customer').apply(np.array, 1))).apply(
    lambda x:  np.sum(np.square(x['Customer1'] - x['Customer2'])), 1)

方法2:

代码语言:javascript
复制
map_dict = df.set_index('Customer').apply(np.array, 1).to_dict()
a = df1.applymap(lambda x: map_dict[x]).values
df1['sum'] = np.sum(np.vstack(np.square(a[:, 0] - a[:, 1])), 1)

产出:

代码语言:javascript
复制
  Customer1 Customer2  sum
0      Boby      Alan   17
1      Boby       Tom   37
2      Alan       Tom    8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68150410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档