我有来自Kaggle Titanic比赛的CSV文件如下。此文件的记录格式由以下列描述: PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embaked。 我想分析这个档案中的数据,检查一群旅行的乘客是否有更好的生存率。为此,我假设Ticket的值对于组中的所有乘客都是相同的。
我在MS Access中加载了CSV,并执行了以下查询以获得所需的结果集:
SELECT a.Ticket, a.PassengerId, a.Survived
FROM train a
WHERE 1 < (SELECT COUNT(*) FROM train b WHERE b.Ticket = a.Ticket)
ORDER BY a.Ticket
如果不编写循环,我无法提取与上面相同的结果集。
答案 0 :(得分:2)
让我们看看这是否匹配:
df.groupby(['Ticket']).filter(lambda x: x.Ticket.count()>1)[['Ticket','PassengerId','Survived']]
或者根据Jezrael的建议:
df.groupby(['Ticket']).filter(lambda x: len(x)>1)[['Ticket','PassengerId','Survived']]
我在Tickets上使用groupby
,然后使用filter
将我的数据帧过滤到该票证组中的计数大于1的记录。