【发布时间】:2021-07-12 04:42:19
【问题描述】:
我有两个如下所示的 excel 文件-
File1.xlsx
文件2.xlsx
我想比较每一行和每一列,并从两个文件中删除共同的行(列标题除外)。输出应如下所示 -
File1.xlsx
File2.xlsx
我的代码-
import pandas
from datetime import datetime
import numpy
df = pandas.read_excel('File1.xlsx')
FORMAT = ['col1','col2','col3']
df_selected = df[FORMAT]
df2 = pandas.read_excel('File2.xlsx')
FORMAT2 = ['col1','col2','col3']
df_selected2 = df2[FORMAT2]
def compare(row1,row2):
# print(row1,row2)
flag = False
i = 0
for t1, t2 in zip(row1, row2):
#if it is first value
#check dates
if(i==0):
formattedDT = datetime.strptime(t1, '%d-%b-%Y')
if(formattedDT!=t2):
flag = True
break
elif(t1!=t2):
flag = True
break
i=i+1
if(flag is False):
return 'matched'
else:
return 'mismatched'
def iterate(array1, array2):
result = array1
for index, row1 in enumerate(array1):
for row2 in array2:
if(compare(row1,row2)=='matched'):
del result[index]
break
df = pandas.DataFrame(result)
df.columns=['col1','col2','col3']
writer = pandas.ExcelWriter('output.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='welcome', index=False)
writer.save()
iterate(df_selected.values,df_selected2.values)
但是我得到了这个错误输出-
ValueError: 无法删除数组元素
请帮忙。
【问题讨论】:
-
我认为 pandas.merge 在这里会有所帮助,然后寻找 _merge 字段。
import pandas as pd left = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB')) right = pd.DataFrame([[1, 2], [7, 4]], columns=list('AB')) merge=pd.merge(left,right,how="outer",on=['A','B'],indicator=True) -
@simpleApp 你可以缩进你的代码并解释你的解决方案。谢谢。
-
我想你们都准备好了。如果您需要任何额外的支持,请告诉我。干杯!