pandas.DataFrame.merge with None(NaN)

pandas.DataFrame.merge with None(NaN),pandas,merge,Pandas,Merge,我需要加入包含None/Nan的字段。但是熊猫背叛了这一点,这正常吗?(模拟相交,需要保留第一个数据帧的索引) 但是 如何加入None?请说明您的预期结果。对不起,添加了代码)嗯,似乎a.merge(b,on='a')或多或少提供了您想要的。不,我需要保留索引a。结果也不一样。但是:a=pd.DataFrame([[None,1],'a',2]],index=[10,11],columns=[a','b'])b=pd.DataFrame([[None,1],'a',2]],columns=[c'

我需要加入包含None/Nan的字段。但是熊猫背叛了这一点,这正常吗?(模拟相交,需要保留第一个数据帧的索引)

但是


如何加入None

请说明您的预期结果。对不起,添加了代码)嗯,似乎
a.merge(b,on='a')
或多或少提供了您想要的。不,我需要保留索引a。结果也不一样。但是:
a=pd.DataFrame([[None,1],'a',2]],index=[10,11],columns=[a','b'])b=pd.DataFrame([[None,1],'a',2]],columns=[c','d'])print(a.merge(b,on=[a','b'])a b#0 None 1#1#a#2
然后您可以使用
连接
a.set\u('a')index('a','a')。连接(b.set='rsu')
此外,我发现很难想象如何从输入中获得合并结果。我在这里猜测。请指出您的预期结果。对不起,添加了代码)嗯,似乎
a.merge(b,on='a')
或多或少给出了您想要的。不,我需要保留索引a。结果也不一样。但是:
a=pd.DataFrame([[None,1],'a',2]],index=[10,11],columns=[a','b'])b=pd.DataFrame([[None,1],'a',2]],columns=[c','d'])print(a.merge(b,on=[a','b'])a b#0 None 1#1#a#2
然后您可以使用
连接
a.set\u('a')index('a','a')。连接(b.set='rsu')
此外,我发现很难想象如何从输入中获得合并结果。我在猜。
a = pandas.DataFrame([[None, 1], [1, 2]], index=[10, 11], columns=['a', 'b'])
b = pandas.DataFrame([[None, 2], [1, 2]], columns=['c', 'd'])

a.merge(
    right=b.drop_duplicates().set_index(b.columns.to_list()),
    how='inner',
    left_on=a.columns.to_list(),
    right_index=True)

#       a  b
# 11  1.0  2
# 11  1.0  2 # Where does this row come from ???
#
# While i was expecting just:
#       a  b
# 11  1.0  2
a = pandas.DataFrame([[None, 1], [1, 2]], index=[10, 11], columns=['a', 'b'])
b = pandas.DataFrame([[None, 1], [1, 2]], columns=['c', 'd'])

a.merge(
    right=b.drop_duplicates().set_index(b.columns.to_list()),
    how='inner',
    left_on=a.columns.to_list(),
    right_index=True)

#       a  b
# 11  1.0  2
# Where is the row [None, 1] ???
#
# While i was expecting:
#       a  b
# 10  NaN  1
# 11  1.0  2