Python 合并结果为NaN,而不是实际值

Python 合并结果为NaN,而不是实际值,python,pandas,merge,Python,Pandas,Merge,我使用pd.merge得到了两种不同的合并行为,我无法解释,我希望有人能帮忙 示例一 手动创建数据帧会导致正确的合并行为。即,卖方列具有正确的值 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-

我使用pd.merge得到了两种不同的合并行为,我无法解释,我希望有人能帮忙

示例一

手动创建数据帧会导致正确的合并行为。即,卖方列具有正确的值

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文件中读取相同的数据,则通过合并会收到不正确的结果。卖方栏现在包含以下内容:

示例二

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
我已经确认两个数据集的数据类型是相同的。除ID为int64外,所有对象都是对象


我缺少什么?

示例一中的单位不同,合并的结果是

   ID  Name        Created at                                  Unit Seller
0   1  Dude  2016-03-07 16:21  7e5652a0-ae3e-11e5-820d-b3523fcc3fb4    NaN
(我运行Ex 1中的代码)可能是您意外更改了单元


(这不应该是答案,但我还不能评论。)

示例一中的单位不同,合并的结果是

   ID  Name        Created at                                  Unit Seller
0   1  Dude  2016-03-07 16:21  7e5652a0-ae3e-11e5-820d-b3523fcc3fb4    NaN
(我运行Ex 1中的代码)可能是您意外更改了单元


(这不应该是答案,但我还不能评论。)

问题不在于我的代码,而在于CSV文件中的数据。users3.csv文件中有一个错误的空格,用于单位列中的值。一旦删除该空间,我就能够产生所需的结果。

问题不在于我的代码,而在于CSV文件中的数据。users3.csv文件中有一个错误的空格,用于单位列中的值。一旦删除了该空间,我就能够产生所需的结果。

read\u csv
之后,您可以从
df1
df2
添加数据吗?感谢您查看-df1的单位值错误。我更新了它,所以它现在应该可以正常工作了。感谢您查看-df1的单位值错误。我更新了它,所以它现在应该可以正常工作了。