如何获取DataFrame列表的共同列?修正列名列表格式问题
问题:找出DataFrame列表中的共同列格式问题
我需要找出DataFrame列表中的共同列,思路是用列表x1存储每个DataFrame的列名,再提取为独立列表,但当前代码生成的结果是:
lst_1=['a1,a2,a3']
而要使用set(lst_1) & set(lst_2)这类集合交集操作,需要把格式修正为:
lst_1=["a1","a2","a3"]
当前使用的代码:
x1=[] dfs = [list of df] for i, df in enumerate(dfs): x1.append([",".join((str(i) for i in df.columns))]) globals()[f'lst_{i}']= x1[i]
问题分析
代码里用",".join(...)把列名拼接成了单个字符串,又将这个字符串塞进子列表,最终得到的是仅含一个元素的列表,无法直接进行集合交集操作。
修正后的代码
直接将DataFrame的列名转为列表存入x1,无需拼接字符串:
x1 = [] dfs = [list of df] # 替换为你的DataFrame列表 for i, df in enumerate(dfs): # 直接转换列名为列表 col_list = list(df.columns) x1.append(col_list) globals()[f'lst_{i}'] = col_list
更简洁的实现(可选)
如果只是为了求所有DataFrame的共同列,无需生成单独的lst_1、lst_2变量,直接用集合操作一步到位:
dfs = [list of df] # 以第一个DataFrame的列作为初始集合 common_cols = set(dfs[0].columns) # 遍历剩余DataFrame,逐步求交集 for df in dfs[1:]: common_cols.intersection_update(df.columns) # 转换为列表格式 common_cols = list(common_cols)
内容的提问来源于stack exchange,提问作者user14269252
相关产品推荐
相关产品推荐

