gpt4 book ai didi

python 2 与 python 3 pd.merge 命令

转载 作者:行者123 更新时间:2023-12-01 01:30:58 26 4
gpt4 key购买 nike

如果我运行 python 2,以下命令可以正常工作

df5b = pd.merge(df5a, df5bb, how='outer')

但是,当我在 python 3 中使用相同的 dfs 运行相同的命令时,出现以下错误:

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

我的数据帧非常大,我希望有人可以帮助我,而不需要给出我的数据帧的示例。该命令在 python 2 中正常,所以我认为问题不是数据帧,但也许在 python 3 中更改了该命令?

最佳答案

存在问题,某些列在一个 DataFrame 中是整数,而在另一个 DataFrame 中是同名的字符串。

最简单的解决方案是将所有列转换为字符串:

df5b = pd.merge(df5a.astype(str), df5bb.astype(str), how='outer')

另一个是测试数据类型:

print (df5a.dtypes)
print (df5bb.dtypes)

并将列转换为相同的,例如将字符串列从列表转换为整数:

cols = ['col1','col12','col3']
df5a[cols] = df5a[cols].astype(int)

示例:

df5a = pd.DataFrame({
'B':[4,5,4,5],
'C':[7,8,9,4],
'F':list('aaab')
})

df5bb = pd.DataFrame({
'B':['4','5','5'],
'F':list('aab')
})

df5b = pd.merge(df5a.astype(str), df5bb.astype(str), how='outer')
print (df5b)

B C F
0 4 7 a
1 4 9 a
2 5 8 a
3 5 4 b
<小时/>
print (df5a.dtypes)
B int64
C int64
F object
dtype: object

print (df5bb.dtypes)
B object
F object
dtype: object

cols = ['B']
df5bb[cols] = df5bb[cols].astype(int)

df5b = pd.merge(df5a, df5bb, how='outer')
print (df5b)

B C F
0 4 7 a
1 4 9 a
2 5 8 a
3 5 4 b

关于python 2 与 python 3 pd.merge 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com