【问题标题】:How two combine two columns of different dataframes such that they have unique values?两者如何组合两列不同的数据框,以使它们具有唯一值?
【发布时间】:2020-03-22 02:51:20
【问题描述】:

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

设置

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)

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

【问题讨论】:

    标签: python pandas


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-21
        • 2011-03-25
        • 2022-01-16
        • 2021-01-16
        • 2019-09-09
        相关资源
        最近更新 更多