print(test_1.x_id)
print(test_2.x_id)
object
int64
这时候就要让两个id一致
方法1:都变成字符串形式
test_1.x_id.astype(str)
test_2.x_id.astype(str)
pd.merge(test_1,test_2,left_on='x_id',right_on='x_id',how='left')
这样就可以了
方法2:都变成int格式
test_1.x_id.astype(int)
test_2.x_id.astype(int)
pd.merge(test_1,test_2,left_on='x_id',right_on='x_id',how='left')
方法3:方法1和方法2失败的情况下
我这里的article_df没有相关问题,所以只对base_df做了处理
方法1 将base_df保存到.csv,然后重新加载.csv
作者是这样说的:我认为它与index_col = 0参数有关。
# 我这里的article_df没有相关问题,所以只对base_df做了处理
# 方法1 将base_df保存到.csv,然后重新加载.csv
# 作者是这样说的:我认为它与index_col = 0参数有关。
base_df.to_csv('preliminary.csv')
base_df = pd.read_csv('preliminary.csv', index_col=0)
total_df = pd.merge(base_df, article_df, how='inner', on=['article_id'])
#方法4:不想使用方法3的情况下使用方法4 将article_id转int存入df后再合并
#这个方法基于两个df中artile_id数据值类型有差异
base_df['article_id'] = base_df['article_id'].apply(int)
total_df = pd.merge(base_df, article_df, how='inner', on=['article_id'])
更多内容VX关注【小猪课堂】公众号,你想要的干活都在这里
我又回来更新了========================================
多年后看之前写的真的很啰嗦,可能不是网友们最想看到的(因为我看的时候看了好久才明白说的是啥子)
字符转换!字符转换!字符转换!字符转换!字符转换!:
str转成int
法一:
df['timestr']=df['timestr'].apply(lambda x : int(x))
法二:
df['timestr']=df['timestr'].astype('int')
法三:
这个一般都会报错
df['timestr']=df['timestr'].apply(lambda x : x.astype('int'))
法四:鸡贼做法
就是将数据集保存一下,载读出来str就变成了了int
法五:
base_df['timestr'] = base_df['timestr'].apply(int)
本质来了,可以改的本质就是你要改的这一列有没有除了数字以外的其他内容比如‘中文’、‘英文’,有就去掉然后就可以改了