import pandas as pd
df1 = pd.read_csv("koko.csv", sep=";", header=0)
df1['Hour'] = df1['Hour'].astype(str)
df2 = pd.read_csv("wowwo", sep=";", header=0)
df2['Hour'] = df2['Hour'].astype(str)
df3 = df1.join(df2, how='inner', on='Hour')`
当我使用Astype(str)时,我得到以下消息:您正试图合并object列和int64列。
当我使用Astype(int)时,我得到以下消息:以10为基数int()的文本无效:"编号:X253252352552"
我该怎么补救呢?
2条答案
按热度按时间jgovgodb1#
来自不同线程的答案:“我也遇到了同样的问题,为什么merge可以处理字符串而join不能,可以在@MatthiasFripp的答案中找到:link。基本上df1.join(df 2)总是通过df 2的索引进行合并,而df1.merge(df 2)将在列上进行合并。因此,基本上我们尝试基于字符串和整数进行合并,即使两列都是字符串”
在我的例子中,两列都是字符串,但是列的内容是字符串和整数的组合,所以这就是为什么它不起作用。
ifmq2ha22#
应该是
df1.merge(df2, on='Hour')
“如果要合并的列不在索引中,请使用merge。”