有没有一种方法可以根据公共值合并列,如果没有匹配则返回NAN。我尝试了下面的代码,但输出很奇怪。即使没有匹配,值也会返回
import pandas as pd
data2 = {'Name' : ['Tom', 'Nick', 'f']}
d2 = pd.DataFrame(data2)
data1 = {'Name' : ['Tom', 'Nick', 'h', 'g']}
d1 = pd.DataFrame(data1)
(d1 d2)
pd.merge(d2, d1, left_index=True, right_index=True, how='left')
Name_x Name_y
0 Tom Tom
1 Nick Nick
2 f h
但预期输出(d1对d2)
Name_x Name_y
0 Tom Tom
1 Nick Nick
2 f NaN
类似地(d1上的d2)
pd.merge(d1, d2, left_index=True, right_index=True, how='left')
Out[17]:
Name_x Name_y
0 Tom Tom
1 Nick Nick
2 h f
3 g NaN
预期输出(d1上的d2)
Name_x Name_y
0 Tom Tom
1 Nick Nick
2 h NaN
3 g NaN
因此,基本上,它应该比较2个 Dataframe ,并根据不匹配的值,它应该返回NaN
3条答案
按热度按时间k2arahey1#
请查看您的帖子上的评论,但您可以在事后进行比较,并在不匹配时替换为NaN。
b4lqfgs42#
按您调用的方式合并将使用索引。您的数据框将索引设置为数值范围(默认值)。您需要将Name设置为索引(或以其他方式调用合并)。
ubof19bj3#
通过使用
indicator
参数和np.where
子句(基于合并标记重新分配值):