【问题标题】:select rows in pandas DataFrame using comparisons against two columns使用与两列的比较来选择 pandas DataFrame 中的行
【发布时间】:2016-05-01 01:22:49
【问题描述】:

我有一个熊猫数据框:

df = pd.DataFrame({'one' : [1, 2, 3, 4] ,'two' : [5, 6, 7, 8]})
   one  two
0    1    5
1    2    6
2    3    7
3    4    8

“一”列和“二”列共同构成 (x,y) 坐标

假设我有一个坐标列表:c = [(1,5), (2,6), (20,5)]

有没有一种优雅的方式来获取df 中的行 有匹配的坐标?在这种情况下,给定c,匹配的行将是 0 和 1

相关问题:Using pandas to select rows using two different columns from dataframe?

还有:Selecting rows from pandas DataFrame using two columns

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用

    >>> set.union(*(set(df.index[(df.one == i) & (df.two == j)]) for i, j in c))
    {0, 1}
    

    【讨论】:

    • 这看起来非常慢,我希望它没有被标记为正确答案。请参阅merge 答案。
    【解决方案2】:

    这种使用pd.merge 的方法应该比迭代解决方案执行得更好。

    import pandas as pd
    
    df = pd.DataFrame({"one" : [1, 2, 3, 4] ,"two" : [5, 6, 7, 8]})
    c = [(1, 5), (2, 6), (20, 5)]
    df2 = pd.DataFrame(c, columns=["one", "two"])
    
    pd.merge(df, df2, on=["one", "two"], how="inner")
       one  two
    0    1    5
    1    2    6
    

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 2018-11-18
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多