【问题标题】:Finding the difference between two sets of data using Pandas使用 Pandas 查找两组数据之间的差异
【发布时间】:2019-03-18 16:56:40
【问题描述】:

我有两个数组,每个数组都包含数百个不同的值,比如说,

list1 = [23.13, 89.50, 12.99, 40.89,...]

list2 = [45.21, 2.02, 79.89, 20.30, ....]

我有一个单独的数组,表示我想从每个数组中比较的条目的索引(0 表示两个数组中的第一个条目,434 表示第 435 个条目,依此类推)。让我们调用这个数组

索引 = [0, 12, 304, ...]

我的目标是从两个列表中获取索引在 indx 中列出的条目,减去这些值,然后将它们存储在另一个数组中。我想使用 Pandas,因为我的大部分代码都使用了 pandas。谢谢你。

【问题讨论】:

    标签: python python-3.x pandas indexing


    【解决方案1】:

    如果你有

    list1 = np.array([23.13, 89.50, 12.99, 40.89])
    list2 = np.array([45.21, 2.02 , 79.89, 20.30])
    
    indx = [0, 2, 3]
    

    那么简单

    >>> list1[indx] - list2[indx]
    array([-22.08, -66.9 ,  20.59])
    

    同样,如果您使用的是pd.Series 而不是np.array

    pd.Series(list1)[indx] - pd.Series(list2)[indx]
    
    0   -22.08
    2   -66.90
    3    20.59
    dtype: float64
    

    对于不对称长度,

    nindx = indx[indx < min(map(len, [list1, list2]))]
    >>> list1[nindx] - list2[nindx]
    

    【讨论】:

    • 啊,我明白了。我唯一的问题(正如我应该提到的,抱歉)是 list1 和 list2 的长度不同,当我尝试这种方法时出现错误。
    • 那么您的idx 中有大于列表之一的索引。发生这种情况时,您希望如何处理?
    • 我不确定。我想这可能是我问题的根本原因。有没有办法忽略 indx 数组中的额外条目?
    猜你喜欢
    • 2018-07-16
    • 2018-10-01
    • 2020-01-11
    • 1970-01-01
    • 2018-01-07
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多