【问题标题】:Indexing from unique values from a different column从不同列的唯一值索引
【发布时间】:2026-02-11 02:35:01
【问题描述】:

我有一个包含一堆列和行的数据框,我想根据另一列中的唯一值获取一列中的数据。

  flag  name
0  1     bob
1  2     larry
2  1     alice
3  1     mary
4  3     peter
5  4     rick

如果使用

df['flag'].unique()

我得到 1 2 3 4

如何获取与这些唯一值对应的名称?

  flag  name
0  1     bob
1  2     larry
4  3     peter
5  4     rick

如果我得到鲍勃、爱丽丝或玛丽并不重要。我只需要该标志值的名称。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    通过使用drop_duplicates

    df.drop_duplicates(['flag'])
    Out[1036]: 
       flag   name
    0     1    bob
    1     2  larry
    4     3  peter
    5     4   rick
    

    【讨论】:

    【解决方案2】:

    Wen 的回答更简单,但另一种方法是使用groupby(),然后使用nth() 获取每个组的第一个条目:

    import pandas as pd
    
    df = pd.DataFrame({'flag':[1, 2, 1, 1, 3, 4],
                       'name':['bob', 'larry', 'alice', 'mary', 'peter', 'rick']})
    
    print df.groupby('flag').nth(0)
    

    结果:

           name
    flag       
    1       bob
    2     larry
    3     peter
    4      rick
    

    【讨论】: