python - 如何根据 pandas 数据框中的 2 个(或更多)其他值选择某个值

标签 python pandas

我一直在尝试找出如何根据数据帧的同一元组中的多个其他值来选择某个值。数据看起来像这样(从当前数据帧复制)

    DealID      PropId LoanId   ServicerId    ServicerPropId
0   BAC98765      15   000015    30220144       010-002-001
1   BAC98765      16   000016    30220092       010-003-001
2   BAC98765      45   000045    30220155       010-045-001
3   BAC98765      48   000048    30220157       010-048-001

用 SQL 术语来说,我想要完成的是:

Select ServicerPropId from dataframe
 where DealID = 'BAC98765' and ServicerId = '30220144'  

我尝试了几种不同的方法来对数据进行切片,但似乎无法弄清楚如何使多个选择标准起作用并仅将 1 个值返回到变量中。

最佳答案

columns = ['DealID', 'PropId', 'LoanId', 'ServicerId', 'ServicerPropId']

d = [('A', [ 'BAC98765', '15', '000015', '30220144', '010-002-001']),
     ('B', [ 'BAC98765', '16', '000016', '30220092', '010-003-001']),
     ('C', [ 'BAC98765', '45', '000045', '30220155', '010-045-001']),
     ('D', [ 'BAC98765', '48', '000048', '30220157', '010-048-001']),]

D =  pandas.DataFrame.from_items(d, orient='index', columns=columns)

criterion1 = D['DealID'].map(lambda x: x == 'BAC98765' )
criterion2 = D['ServicerId'].map(lambda x: x == '30220144')

res = D[criterion1 & criterion2]['ServicerPropId']

使用map可以让你输入任何你想要的条件,在这种情况下你可以更简单地做到这一点(正如DSM评论中所指出的)

res = D[(D['DealID'] == "BAC98765") & (D["ServicerId"] == "30220144")]['ServicerPropId']

这给出

In [35]: print res
A    010-002-001
Name: ServicerPropId

In [36]: type(res)
Out[36]: pandas.core.series.Series

(doc)

关于python - 如何根据 pandas 数据框中的 2 个(或更多)其他值选择某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665828/

相关文章:

python - 无法在 Pandas 中创建锯齿状数据框?

python - 迭代多个 python 列表上的元素

python - 使用没有循环的numpy在python中用数组或向量填充数组

用于模糊匹配的 Python 哈希表

python - 根据其他列的值创建新列

pandas - 按照以下唯一方式对行进行排序(列的值可以在同一行内互换,以对行进行排序)

python - 从变量和另一个列表创建列表的正确方法是什么?

python - 比例/百分比值

python - 将两列 Pandas 的值(value)合并为一个

python - 获取给定条件成立的数据帧的列号