当前位置: 代码迷 >> python >> 两个如何组合两列不同的数据帧,使它们具有唯一的值?
  详细解决方案

两个如何组合两列不同的数据帧,使它们具有唯一的值?

热度:25   发布时间:2023-07-16 10:50:08.0

我有两个不同的数据框,我想获得两列的排序值。

设置

import numpy as np
import pandas as pd

df1 = pd.DataFrame({
    'id': range(7),
    'c': list('EDBBCCC')
    })

df2 = pd.DataFrame({
    'id': range(8),
    'c': list('EBBCCCAA')
    })

期望输出

# notice that ABCDE appear in alphabetical order
c_first c_second
NAN A
B   B
C   C
D   NAN
E   E

我试过的

pd.concat([df1.c.sort_values().drop_duplicates().rename('c_first'),
           df2.c.sort_values().drop_duplicates().rename('c_second')
           ],axis=1)

如何获得所需格式的输出?

这是实现它的一种可能方法:

t1 = df1.c.drop_duplicates()
t2 = df2.c.drop_duplicates()

tmp1 = pd.DataFrame({'id':t1, 'c_first':t1})
tmp2 = pd.DataFrame({'id':t2, 'c_second':t2})

result = pd.merge(tmp1,tmp2, how='outer').sort_values('id').drop('id', axis=1)
result
   c_first c_second
4     NaN        A
0       B        B
1       C        C
2       D      NaN
3       E        E

concat 函数中有一个参数。 尝试添加sort=True

  相关解决方案