Pandas 数据帧操作

Pandas 数据帧操作,pandas,Pandas,我有以下数据帧 df = pd.DataFrame({ 'CARD_NO': [000, 001, 002, 002, 001, 111], 'request_code': [2400,2200,2400,3300,5500,6600], 'merch_id': [1, 2, 1, 3, 3, 5], 'resp_code': [0, 1, 0, 1, 1, 1]}) 根据这一要求, inquiries = df[(df.request_code == 2400) & (df.merc

我有以下数据帧

df = pd.DataFrame({
'CARD_NO': [000, 001, 002, 002, 001, 111],
'request_code': [2400,2200,2400,3300,5500,6600],
'merch_id': [1, 2, 1, 3, 3, 5],
'resp_code': [0, 1, 0, 1, 1, 1]})
根据这一要求,

inquiries = df[(df.request_code == 2400) & (df.merch_id == 1) & (df.resp_code == 0)]
我需要在df中标记查询为真的卡片号==卡片号的记录。
如果查询返回:

[6 rows x 4 columns]
index    CARD_NO  merch_id  request_code  resp_code
0        0         1          2400          0
2        2         1          2400          0
那么df应该是这样的:

index     CARD_NO  merch_id  request_code  resp_code    flag
0        0         1          2400          0            N
1        1         2          2200          1            N
2        2         1          2400          0            N      
3        2         3          3300          1            Y
4        1         3          5500          1            N
5      111         5          6600          1            N
我尝试了几次合并,但似乎都没有得到我想要的结果。 任何帮助都将不胜感激。
谢谢。

如果我正确理解了您的问题,以下操作应该有效,即您希望仅当卡号在筛选组中,但行本身不在筛选组中时,才将标志设置为true

filtered = (df.request_code == 2400) & (df.merch_id == 1) & (df.resp_code == 0)
df["flag"] = filtered.map(lambda x: "Y" if x else "N")
import numpy as np
filter = (df.request_code == 2400) & (df.merch_id == 1) & (df.resp_code == 0)
df['flag']=np.where(~filter & df.CARD_NO.isin(df.ix[filter, 'CARD_NO']), 'Y', 'N')

你的要求有点模糊,你能让它们更精确吗?df中有两种类型的记录。符合要求的和不符合要求的。对于df中的每个记录,我需要首先找出哪些记录符合需求。然后,对于数据帧中的每个记录,除了那些符合要求的记录外,我需要找出它们的CARD_NO是否与具有所有要求的记录集中的CARD_NO匹配。这有用吗?这是一个奇怪的用例。这有助于找到具有所有需求的记录。但是,它在df中找不到与具有所有要求的记录具有相同卡号的其他记录。我会试着用这个作为基础。谢谢除了
filtered->~ filtered&df.CARD\u NO.isin(df.ix[filtered'CARD\u NO'])
,公认的解决方案还有什么不同?这看起来不错!我会让你知道它是如何处理我更大的数据集的。工作得很有魅力!谢谢