查找哪个列对于哪个 Excel 工作表数据框是唯一的

lea*_*ode 5 python dataframe python-3.x pandas

我有一个包含 40 个工作表的 Excel 工作表。我需要知道这些工作表中的哪些列在其他工作表中不存在。前工作表编号 1: column1 column2 column3 column4

工作表编号 2: column1 column2 column3 column5

工作表编号 3: column1 column2 column3 column 5 column6

我的数据框:

df_column_sheet_name    column
sheet number 1:           column4
sheet number 2:           column5
sheet number 3:           column5,column6
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助

jez*_*ael 2

首先使用sheet_name=None参数将所有工作表转换为 DataFrames 字典:

df = pd.read_excel('file.xlsx', sheet_name=None)
#print (df)
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式获取所有工作表中相同的所有列reduce

from functools import reduce
same = reduce(lambda x, y: set(x) & set(y), df.values())
print (list(same))
['column1', 'column2', 'column3']
Run Code Online (Sandbox Code Playgroud)

最后过滤列的连接列名称不匹配并传递给DataFrame构造函数:

out = [(k, ', '.join(x for x in v.columns if x not in same)) for k, v in df.items()]
print (out)
[('sheet number 1', 'column4'), 
 ('sheet number 2', 'column5'), 
 ('sheet number 3', 'column5, column6')]


df1 = pd.DataFrame(out, columns=['df_column_sheet_name','column'])
print (df1)
  df_column_sheet_name            column
0       sheet number 1           column4
1       sheet number 2           column5
2       sheet number 3  column5, column6
Run Code Online (Sandbox Code Playgroud)