如何在pandas

时间:2017-04-23 18:05:12

标签: python pandas

我有来自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

如果不编写循环,我无法提取与上面相同的结果集。

1 个答案:

答案 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的记录。