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)
非常感谢您的帮助
首先使用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)
归档时间: |
|
查看次数: |
55 次 |
最近记录: |