繁体   English   中英

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

[英]How two combine two columns of different dataframes such that they have unique values?

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

设置

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

https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.concat.html

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM