我有一个carid
,我想看看所有与此carid
有关的买家。所以我想有所有的买家谁已经购买了carid
3。我该怎么做?
import pandas as pd
d = {'Buyerid': [1,1,2,2,3,3,3,4,5,5,5],
'Carid': [1,2,3,4,4,1,2,4,1,3,5]}
df = pd.DataFrame(data=d)
print(df)
Buyerid Carid
0 1 1
1 1 2
2 2 3
3 2 4
4 3 4
5 3 1
6 3 2
7 4 4
8 5 1
9 5 3
10 5 5
# What I want
Buyerid Carid
2 2 3
3 2 4
8 5 1
9 5 3
10 5 5
我已经测试过这个df = df.loc[df['Carid']==3,'Buyerid']
,但这只给了我CardID
3的线路,但不是完整的买家。如何根据列值从DataFrame中选择行
我看了一下,但这里只有这个
Buyerid Carid
2 2 3
9 5 3
执行以下操作:
import pandas as pd
d = {'Buyerid': [1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5],
'Carid': [1, 2, 3, 4, 4, 1, 2, 4, 1, 3, 5]}
df = pd.DataFrame(data=d)
# get all buyers
buyers = set(df.loc[df['Carid'] == 3, 'Buyerid'])
# boolean mask for filtering
mask = df['Buyerid'].isin(buyers)
print(df[mask])
输出
Buyerid Carid
2 2 3
3 2 4
8 5 1
9 5 3
10 5 5
您可以使用df.loc
:
df.loc[df['Carid']==3,'Buyerid']