例如,我正在尝试根据客户是否至少使用过一次信用卡进行购买将数据帧一分为二。
示例数据帧的组织方式如下:
data = {
'purchase_id'=[1,2,3,4,5,6,7],
'customer_id'=[1,1,2,2,3,3,3],
'used_card'=[True, True, False, False, True, False, False]
}
理想的输出是包含客户使用卡的所有行的数据帧,以及包含从未使用过卡的所有行的数据帧。如果客户之前至少使用过一次,我只是抛出带有 used_card==False 的行。
输出:
purchases_with_card = {
'purchase_id'=[1,2,5],
'customer_id'=[1,1,3],
'used_card'=[True, True, True]
}
purchases_by_customer_with_no_card = {
'purchase_id'=[3,4],
'customer_id'=[2,2],
'used_card'=[False, False]
}
谢谢你的时间。
使用 boolean indexing
:
purchases_with_card = data[data['used_card']]
print (purchases_with_card)
customer_id purchase_id used_card
0 1 1 True
1 1 2 True
4 3 5 True
和:
mask =~data['used_card']&~data['customer_id'].isin(data.loc[data['used_card'],'customer_id'])
purchases_by_customer_with_no_card = data[mask]
print (purchases_by_customer_with_no_card)
customer_id purchase_id used_card
2 2 3 False
3 2 4 False