作者:乌龟考拉互受 | 来源:互联网 | 2022-12-04 16:24
1> ALollz..:
嗯,这似乎是一个奇怪的例子,join
试图强迫它dtypes
并且它做错了.有些东西可能出错了self._maybe_coerce_merge_keys()
.
您可以通过使用.merge
,或者如果您仍然想要使用.join
它来解决这个问题,似乎不会弄乱dtypes
它们首次设置为索引时.
import pandas as pd
df1 = pd.DataFrame({'id': ['1', 'True', '4'], 'vals': [10, 11, 12]})
df2 = df1.copy()
df1.join(df2, on='id', how='left', rsuffix='_fs')
ValueError:您正在尝试合并object和int64列.如果您想继续,请使用pd.concat
另一方面,这些工作:
df1.set_index('id').join(df2.set_index('id'), how='left', rsuffix='_fs').reset_index()
# id vals vals_fs
#0 1 10 10
#1 True 11 11
#2 4 12 12
df1.merge(df2, on='id', how='left', suffixes=['', '_fs'])
# id vals vals_fs
#0 1 10 10
#1 True 11 11
#2 4 12 12