有没有办法知道哪些列具有可以合并的不同数据类型? Python - Pandas

Is there a way to know which columns have different datatypes to be able to merge? Python - Pandas

所以我有 2 个相当大的 df,但我遇到了一些 ValueErrors。

ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat

我一一检查(30 列,oof)并最终解决了问题,但我想知道是否有任何代码可以提供阻止合并的特定列...这对我来说可能非常有用,因为我正在处理其他人的数据框,而且这样的事情一直都在发生。

示例:

df1 (4.000.000,30) df2 (2.000,120)


Join= pd.merge(df1,df2,how='left',on['Name_of_Column1','Name_of_Column2','Name_of_Column3','Name_of_Column4'])

ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat

它们只有一些共同的列,我可以通过某种方式比较 dfs 的数据类型以了解哪些列具有不同的数据类型吗?

提前致谢!

假设您有 2 个具有相似列名的数据框,并且只对知道哪些列在两个数据框中不具有相同 dtype 感兴趣,这样您就可以安心地进行合并,您可以尝试以下操作:

df1 = pd.DataFrame([[1,2,'3',4],
                   [1,2,'3',4],
                   [1,2,'3',4]], columns=['a','b','c','d'])

df2 = pd.DataFrame([[5,5,'5','5'],
                   [5,5,'5','5'],
                   [5,5,'5','5']], columns=['a','b','c','d'])

获取这 2 个数据帧,其中 'd' 列具有 dtype 不匹配

def dtype_checker(df1, df2):
    df1_types = dict(df1.dtypes)
    df2_types = dict(df2.dtypes)
    for col_name in df1.columns:
        assert df1_types[col_name] == df2_types[col_name], 'dtype mismatch in '+col_name+' column'

dtype_checker(df1, df2)

这将导致输出:

AssertionError: dtype mismatch in d column