【问题标题】:Get Index of dataframe 1 to dataframe 2获取数据帧 1 到数据帧 2 的索引
【发布时间】:2018-05-29 18:51:37
【问题描述】:

我有 2 个数据框

数据框 1

一年一度的格莱美

数据框2

一年一度的格莱美歌曲

如果年度格莱美匹配,我想在 Dataframe 2 中获取 Dataframe 1 的索引作为新列。需要合并吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    假设你有

    df1 = df1 = pd.DataFrame({"annualGrammy":[11,12,13,14,15,16,17,18]}, index=["i1","i2", "i3","i4","i5","i6","i7","i8"])
    df2 = pd.DataFrame({"annualGrammy":[11,16,17,110,111], "song": ["a","b","c","d","e"]})
    

    这样

    df1.reset_index()
    
        annualGrammy    index
    0   11              i1
    1   12              i2
    2   13              i3
    3   14              i4
    4   15              i5
    5   16              i6
    6   17              i7
    7   18              i8
    

    df2
    
        annualGrammy    song
    0   11              a
    1   16              b
    2   17              c
    3   110             d
    4   111             e
    

    您可以使用how="left" 合并以跟踪df1 上的索引:

    pd.merge(df1, df2, on="annualGrammy", how="left")
    
        index   annualGrammy    song
    0   i1      11              a
    1   i2      12              NaN
    2   i3      13              NaN
    3   i4      14              NaN
    4   i5      15              NaN
    5   i6      16              b
    6   i7      17              c
    7   i8      18              NaN
    

    所有NaNs 都是在ag 中不匹配的值。您可以删除它们以仅获取重要的值

    pd.merge(df1, df2, on="annualGrammy", how="left").dropna()
    
        annualGrammy    index   song
    0   11              i1      a
    5   16              i6      b
    6   17              i7      c
    

    【讨论】:

      【解决方案2】:

      如果df1 中的annualGrammy 是唯一的,您还可以使用mapdf2 中创建一个新列。使用RafaelC提供的数据

      import pandas as pd
      
      dct = pd.Series(df1.index.values, df1.annualGrammy.values).to_dict()
      df2['index'] = df2.annualGrammy.map(dct)
      df2 = df2.dropna()
      

      df2 现在是

         annualGrammy song index
      0            11    a    i1
      1            16    b    i6
      2            17    c    i7
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-12
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        • 2019-11-16
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多