Python 合并熊猫中的数据帧-继续获取密钥错误?

Python 合并熊猫中的数据帧-继续获取密钥错误?,python,pandas,Python,Pandas,我试图合并两个数据帧,testr和testc,但我一直在“channelid”上遇到一个关键错误,不确定问题出在哪里。数据帧必须具有相同的大小还是具有相同的数据类型才能使pd.merge正常工作?下面是我要在每个数据帧上与.info()合并的代码: def matchID_RC(rev,cost): rc = pd.merge(rev, cost, on='Channel ID', how = 'outer') return rc testr.info() <class

我试图合并两个数据帧,testr和testc,但我一直在“channelid”上遇到一个关键错误,不确定问题出在哪里。数据帧必须具有相同的大小还是具有相同的数据类型才能使pd.merge正常工作?下面是我要在每个数据帧上与.info()合并的代码:

def matchID_RC(rev,cost):
    rc = pd.merge(rev, cost, on='Channel ID', how = 'outer')
    return rc

testr.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 169 entries, 0 to 168
Data columns (total 7 columns):
Channel ID         169 non-null int64
Channel Name       169 non-null object
Impressions        169 non-null object
Fill Rate          169 non-null object
Gross Rev          169 non-null object
Impression Fees    169 non-null object
Exchange Fees      169 non-null object
dtypes: int64(1), object(6)
memory usage: 10.6+ KB

testc.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 63 entries, 0 to 62
Data columns (total 3 columns):
Channel ID    62 non-null object
Campaign      63 non-null object
Ad Spend      63 non-null float64
dtypes: float64(1), object(2)
memory usage: 2.0+ KB
def matchID_RC(版本、成本):
rc=pd.merge(版本、成本、on='Channel ID',how='outer')
返回rc
testr.info()
INT64索引:169个条目,0到168
数据列(共7列):
通道ID 169非空int64
通道名称169非空对象
169非空对象
填充率169非空对象
Gross Rev 169非空对象
Impression Fees 169非空对象
交换费用169非空对象
数据类型:int64(1),对象(6)
内存使用率:10.6+KB
testc.info()
INT64索引:63个条目,0到62
数据列(共3列):
通道ID 62非空对象
活动63非空对象
广告支出63非空浮动64
数据类型:float64(1),object(2)
内存使用率:2.0+KB

它们必须是相同的数据类型。毕竟,您无法比较字符串和整数是否相同。

似乎两个数据帧中确实存在
'Channel ID'
,但是,在一个数据帧中它被定义为
object
,在另一个数据帧中定义为
int

这可以通过
convert\u对象解决:

def matchID_RC(rev,cost,col='Channel ID'):
    rev[col]=rev[col].convert_objects(convert_numeric=True)
    cost[col]=cost[col].convert_objects(convert_numeric=True)
    rc = pd.merge(rev, cost, on=col, how = 'outer')
    return rc