确定在熊猫中几个数据框是否具有相同的列名

时间:2019-12-05 15:46:58

标签: python pandas

我有几个df,想确定它们是否都具有相同的列名。我已经看到了几个使用两个数据帧完成此操作的示例,但需要一些有关如何在多个df-s上执行此操作的信息。

例如,如果我有df-s列表

dataframes = [df_1, df_2, df_3, df_4, df_5_1, df_5_2, df_6_1, df_6_2]

我想遍历每一个,看看它们是否都包含相同的列名。

3 个答案:

答案 0 :(得分:1)

假设您没有重复的列名(在pandas中从来都不是一个好主意,并且“相同”不在乎它们在索引中的位置,则足以检查长度)列索引的长度与两个DataFrame索引之间设置的交集的长度相同。

由于您想知道它们是否全部相同或任何不同,因此只需对照第一个即可。

all([len(dataframes[0].columns.intersection(df.columns)) 
      == dataframes[0].shape[1] for df in dataframes])

答案 1 :(得分:0)

您可以使用以下方法检查data

columns = list(map(lambda x: list(x.columns), [df, df, df]))
data = pd.DataFrame(columns)
data = data.fillna("")
data.drop_duplicates(keep="first", inplace=True)
if len(data) > 1:
  print("DIFFERENT COLUMNS")

,如果您在data中找到索引,则该索引大于1行,它将显示columns中的哪个数据帧

答案 2 :(得分:0)

只需比较列集

if all([set(dataframes[0].columns) == set(df.columns) for df in dataframes]):
    print('All have the same columns')
else:
    print('Some have different columns')

ALollz的简洁答案的一种稍微简单的变体(即使他更快,我也不会感到惊讶)。