图中粗体为index和columns,第一块为df1,第二块为df2,我有这两个单独的df,请问如何获得第三块,也就是我想要的df3。
我觉得,最好截图个前几行 ,再做说明,这样会更新直观清晰。不然想帮你的人,都是在盲猜。
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)