【发布时间】:2016-04-06 03:10:11
【问题描述】:
我使用 pd.merge 得到了两种不同的合并行为,我无法解释,我希望有人能伸出援手。
示例一
手动创建数据框会产生正确的合并行为。即,Seller 列的值正确。
df1 = DataFrame([[1,'Dude','2016-03-07 16:21', '1e2345a6-ae7e-89e0-123d-b4567fcc8fb9']],columns=['ID','Name','Created at', 'Unit'])
df2 = DataFrame([['SellTEST','1e2345a6-ae7e-89e0-123d-b4567fcc8fb9']], columns=['Seller', 'Unit'])
merge_df = pd.merge(df1, df2, on=['Unit'],how='left')
print (merge_df)
结果:
ID Name Created at Unit Seller
0 1 Dude 2016-03-07 16:21 1e2345a6-ae7e-89e0-123d-b4567fcc8fb9 SellTEST
如果我从 .csv 文件中读取相同的数据,我会收到不正确的合并结果。 Seller 列现在包含 NaN:
示例二
ticketdata = r'tickets3.csv'
userdata = r'users3.csv'
df1 = pd.read_csv(ticketdata)
df2 = pd.read_csv(userdata)
merge_df = pd.merge(df1, df2, on=['Unit'],how='left')
print (merge_df)
结果:
ID Name Created at Unit Seller
0 1 Dude 2016-03-07 16:21 1e2345a6-ae7e-89e0-123d-b4567fcc8fb9 NaN
我已确认两个数据集的 dtype 相同。除了 ID 是 int64 之外,一切都是 Object。
我错过了什么?
【问题讨论】:
-
能否在
read_csv之后添加来自df1和df2的数据?