python: 两个csv的dataframe中数值比较

我有两个不同大小的dataframe,  csv文件,形式都是是['name','category','value1','value2','value3'] 

首先需要改成['name','category','value1';'name','category','value2','name','category','value3']的格式,

 

然后需要将其中一个的每一value和第二个dataframe中的所有的value进行比较,找出最接近的值,然后计算差值,print出这个值所在的索引。

最后得到结果文件。

对循环,数值目前理解困难。 

nearest=(np.abs(array - value)).argmin()

需要对value(第一个dataframe中数值)进行循环,

有大神可以帮忙么

 

试下下面的代码, 两个表都是二维的表, 思路:

  • 两个循环, 第1层循环第1个表的每个值, 第2个循环是在第2个表中按列循环
  • 判断是否为最小值,获取索引
import pandas as pd
import numpy as np
np.random.seed(123)
data1 = pd.DataFrame({'A':np.random.randint(50,100,5),'B':np.random.randint(5,20,5)})
data2 = pd.DataFrame(np.random.randint(50,100,(5,2)),columns=['a','b'])

lis = data1.melt()['value'].tolist()
for i in lis:
    datai = abs(i - data2)
    i_min = datai.min().min()
    for col in datai.columns:
        if i_min in datai[col].values:
            i_index = datai[col][datai[col].values==i_min].index.tolist()
            print(i,'→',i_index)
95 → [3]
52 → [2]
78 → [1, 3, 4]
84 → [0]
88 → [0]
6 → [2]
8 → [2]
15 → [2]
16 → [2]
14 → [2]

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632