如何仅比较数据框的架构?

时间:2019-02-18 08:24:17

标签: python pandas dataframe

正如标题所说,我只想比较两个数据帧的数据类型和列名是否相同。我不在乎值是否相等。

根据我已经尝试过的方法,.equals()也会比较值,如果我尝试比较空数据框,它们总是导致不相等(而且,我失去了dtypes属性)。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:9)

比较DataFrame.dtypes创建的Series

df1.dtypes.equals(df2.dtypes)

示例

df1 = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'F':list('aaabbb')
})

df2 = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'F':list('aaabbb')
})

df3 = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4.0,5,4,5,5,4],
         'F':list('aaabbb')
})

df4 = pd.DataFrame({
        'A':list('abcdef'),
         'C':[4,5,4,5,5,4],
         'F':list('aaabbb')
})

print (df1.dtypes.equals(df2.dtypes))
True

print (df1.dtypes.equals(df3.dtypes))
False

print (df1.dtypes.equals(df4.dtypes))
False