有没有办法知道哪些列具有可以合并的不同数据类型? 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
所以我有 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