我有一个df
由人、起点和终点组成
df = pd.DataFrame({'PersonID':['1','1','2','2','2','3'],'O':['A','B','C','B','A','X'],'D':['B','A','B','A','B','Y']})
国防军:
PersonID O D
1 A B
1 B A
2 C B
2 B A
2 A B
3 X Y
我用df_grouped = df.groupby(['O','D'])
按df分组,并将它们与另一个数据帧taxi
匹配
TaxiID O D
T1 B A
T2 A B
T3 C B
类似地,我用taxi
和O
和D
对taxi
进行分组。然后,在汇总和计算每个O-D对的PersonID和Taxid之后,我合并了它们。我这样做是为了看看有多少出租车可供多少人使用
O D PersonID TaxiID
count count
A B 2 1
B A 2 1
C B 1 1
现在,我想执行df.loc
以仅获取合并文件中计数的人名。我该怎么做?我试着告诉我们:
seek = df.loc[df.PersonID.isin(merged['PersonID'])]
但它返回一个空数据帧。我能做些什么呢
编辑:我使用虚拟数据附加此案例的完整代码
df = pd.DataFrame({'PersonID':['1','1','2','2','2','3'],'O':['A','B','C','B','A','X'],'D':['B','A','B','A','B','Y']})
taxi = pd.DataFrame({'TaxiID':['T1','T2','T3'],'O':['B','A','C'],'D':['A','B','B']})
df_grouped = df.groupby(['O','D'])
taxi_grouped = taxi.groupby(['O','D'])
dfm = df_grouped.agg({'PersonID':['count',list]}).reset_index()
tgm = taxi_grouped.agg({'TaxiID':['count',list]}).reset_index()
merged = pd.merge(dfm, tgm, how='inner')
seek = df.loc[df.PersonID.isin(merged['PersonID'])]
为嵌套列表中的标量选择} :
MultiIndex
bytuple
with ^{为了获得更好的性能,可以将
set comprehension
与扁平化一起使用:相关问题 更多 >
编程相关推荐