【问题标题】:How to get intersection of dataframes based on column labels?如何根据列标签获取数据框的交集?
【发布时间】:2019-11-15 12:14:54
【问题描述】:

我想根据列标签获取 pandas 数据框 df_adf_b 的交集。考虑df_a

import pandas as pd

df_a = pd.DataFrame(
    columns=[0.1, 0.2, 0.6],
    data=[[59, 10, 50]],
)
df_a
    0.1     0.2     0.6
0   59      10      50

df_b

df_b = pd.DataFrame(
    columns=intervals_b,
    data=[[59, 20, 50]],
)
    0.1     0.4     0.6
0   59      20      50

。如何获得预期的交叉点?

    0.1     0.6
0   59      50

【问题讨论】:

    标签: python python-3.x dataframe


    【解决方案1】:

    获取两列列表的交集?然后从其中一个数据帧中获取值:

    这是你需要的吗?

    >>> col_intersect = list(set(df_a.columns.tolist()).intersection(df_b.columns.tolist()))
    >>> col_intersect
    [0.1, 0.6]
    
    >>> new_df = df_a[col_intersect]
    >>> new_df
       0.1  0.6
    0   59   50
    

    【讨论】:

      【解决方案2】:

      一个快速的解决方案是找到公共列,然后进行合并内部操作:

      import numpy as np
      import pandas as pd
      
      
      df_a = pd.DataFrame(
          columns=[0.1, 0.2, 0.6],
          data=[[59, 10, 50],[1,2,3]],
      )
      df_b = pd.DataFrame(
          columns=[0.1, 0.4, 0.6],
          data=[[59, 20, 50],[4,5,6]],
      )
      
      #get an array of common column names
      col = np.intersect1d(df_a.columns.tolist(), df_b.columns.tolist())
      
      df_all = pd.merge(df_a[col], df_b[col], how='inner')
      

      【讨论】:

        猜你喜欢
        • 2018-06-21
        • 2023-04-07
        • 2013-04-14
        • 2020-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        相关资源
        最近更新 更多