如何在 Pandas 中执行等效的相关子查询

Sud*_*jee 5 python pandas

我有一个来自 Kaggle Titanic 比赛的 CSV 文件,如下所示。此文件的记录格式由以下列描述:PassengerId、Survived、Pclass、Name、Sex、Age、SibSp、Parch、Ticket、Fare、Cabin、Embarked。我想对这个文件中的数据进行分析,看看是否跟团的乘客有更好的存活率。为此,我假设组中所有乘客的 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
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*ton 3

让我们看看这是否匹配:

df.groupby(['Ticket']).filter(lambda x: x.Ticket.count()>1)[['Ticket','PassengerId','Survived']]
Run Code Online (Sandbox Code Playgroud)

或者按照 Jezrael 的建议:

df.groupby(['Ticket']).filter(lambda x: len(x)>1)[['Ticket','PassengerId','Survived']]
Run Code Online (Sandbox Code Playgroud)

groupby在票证上使用,然后使用 过滤我的数据帧到该票证组中计数大于 1 的记录filter