如何把这个两个df变成我想要的结果

img

图中粗体为index和columns,第一块为df1,第二块为df2,我有这两个单独的df,请问如何获得第三块,也就是我想要的df3。

img


这样子行吗?

我觉得,最好截图个前几行 ,再做说明,这样会更新直观清晰。不然想帮你的人,都是在盲猜。


import pandas


# 进行查询操作
def search(aim_dict, key):
    new_dict = aim_dict
    array_length = len(list(aim_dict.values())[0])
    for i in range(len(key)):
        if key[i] not in list(new_dict.keys()):
            new_dict[key[i]] = new_dict.get(key[i], [0] * array_length)
    return new_dict


# 做减法
def subtraction(array1, array2, key):
    length1 = len(array1)
    length2 = len(array2)
    if length1 != length2:
        if length1 > length2:
            for i in range(length1 - length2):
                array2 = array2.append()
        else:
            for i in range(length2 - length1):
                array1 = array1.append()
    new_array = []
    for i in range(len(array1)):
        new = []
        symbol = True
        for j in range(len(array1[i])):
            if array1[i][j] == 0:
                symbol = True
            else:
                symbol = False
        for j in range(len(array1[i])):
            if symbol is False:
                for l in range(len(array1[i])):
                    new.append(-array1[i][l])
                break
            else:
                data = array2[i][j] - array1[i][j]
                new.append(data)
        new_array.append(new)
    new_dict = {}
    for i in range(len(key)):
        new_dict[key[i]] = new_dict.get(key[i], new_array[i])
    return new_dict


def main(dict1, dict2):
    data_dict1 = dict1
    data_dict2 = dict2
    key1 = list(data_dict1.keys())
    key2 = list(data_dict2.keys())
    data_dict1 = search(data_dict1, key2)
    data_dict2 = search(data_dict2, key1)
    the_array = [data_dict1, data_dict2]
    a = pandas.DataFrame(the_array)
    a = a.groupby(a.index).sum()
    a1 = a.values[0]
    a2 = a.values[1]
    the_new_dict = subtraction(a1, a2, list(data_dict1.keys()))
    b = pandas.DataFrame([data_dict1, data_dict2, the_new_dict])
    return b


if __name__ == '__main__':
    d1 = {"2022/1/1": [4, 5, 6, 7], "2022/1/2": [6, 7, 8, 9], "2022/1/3": [8, 9, 10, 11]}
    d2 = {"2022/1/3": [4, 5, 6, 7], "2022/1/4": [6, 7, 8, 9], "2022/1/5": [8, 9, 10, 11]}
    result = main(dict1=d1, dict2=d2)
    print(result)

img


可以自写程序;来加减字典,最后再用pandas来展示, 字典你可以自己用Excel的库来读取,有用的话点一下采纳