2024-09-29 21:29:15 发布
网友
在python pandas中键为null时,是否可以执行右连接。 也就是说,我是否可以将DateFrames连接起来,以便只从右侧生成与左侧不匹配的值?在
我认为这最好用索引选择操作来表示。要在一个帧中而不是在另一个帧中查找所有索引,请尝试对两个Dataframe index对象使用-运算符,就像index对象是内置的python set对象一样。例如:
index
-
In [1]: dfa = pd.DataFrame({'A': range(5)}, index=range(5)) In [2]: dfb = pd.DataFrame({'A': range(10, 15)}, index=range(3,8)) In [3]: dfa Out[3]: A 0 0 1 1 2 2 3 3 4 4 In [4]: dfb Out[4]: A 3 10 4 11 5 12 6 13 7 14 In [5]: dfb.loc[dfb.index - dfa.index] Out[5]: A 5 12 6 13 7 14
您可以在每个数据帧中生成一个虚拟列,使用pd合并()右联接数据帧,然后使用掩码筛选空值。在
In [1]: dfa = pd.DataFrame({'A': range(4, 8)}) In [2]: dfb = pd.DataFrame({'A': range(6, 10)}) In [3]: dfa['ones'] = 1 In [4]: dfb['ones'] = 1 In [5]: dfa Out[5]: A ones 0 4 1 1 5 1 2 6 1 3 7 1 In [6]: dfb Out[6]: A ones 0 6 1 1 7 1 2 8 1 3 9 1 In [7]: df = pd.merge(dfa, dfb, on = 'A', how = 'right') In [8]: df Out[8]: A ones_x ones_y 0 6 1 1 1 7 1 1 2 8 NaN 1 3 9 NaN 1 In [8]: df[df.ones_x.notnull()][['A']] Out[8]: A 0 6 1 7
更紧凑的合并解决方案:
df = dfa.merge(dfb, indicator='i', how='outer').query('i == "right_only"').drop('i', 1) print (df)
从这里采取的解决方案:
https://stackoverflow.com/a/49487564/9539462
我认为这最好用索引选择操作来表示。要在一个帧中而不是在另一个帧中查找所有索引,请尝试对两个Dataframe
index
对象使用-
运算符,就像index对象是内置的python set对象一样。例如:您可以在每个数据帧中生成一个虚拟列,使用pd合并()右联接数据帧,然后使用掩码筛选空值。在
更紧凑的合并解决方案:
从这里采取的解决方案:
https://stackoverflow.com/a/49487564/9539462
相关问题 更多 >
编程相关推荐