Python 合并结果为NaN,而不是实际值
我使用pd.merge得到了两种不同的合并行为,我无法解释,我希望有人能帮忙 示例一 手动创建数据帧会导致正确的合并行为。即,卖方列具有正确的值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-
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的单位值错误。我更新了它,所以它现在应该可以正常工作了。