向python数据帧添加组计数的最佳方法

向python数据帧添加组计数的最佳方法,python,pandas,merge,Python,Pandas,Merge,我正在学习Python,并且正在使用Titanic数据集进行学习。一张车票上有不止一名乘客,我想增加一个row级别的groupsize功能,以便与乘客一起使用 我使用以下代码: tickets = pd.DataFrame(columns = ['ticket', 'groupsize']) tickets['groupsize'] = titanic['ticket'].value_counts() tickets['ticket'] = tickets.index newTitanic =

我正在学习Python,并且正在使用Titanic数据集进行学习。一张车票上有不止一名乘客,我想增加一个row级别的groupsize功能,以便与乘客一起使用

我使用以下代码:

tickets = pd.DataFrame(columns = ['ticket', 'groupsize'])
tickets['groupsize'] = titanic['ticket'].value_counts()
tickets['ticket'] = tickets.index
newTitanic = pd.merge(titanic, tickets, how= 'left', on = 'ticket')
有没有更快的方法

输出如下所示:

titanic['groupsize']=titanic.groupby('ticket')['PassengerID'].count().reset_index()['PassengerID']
您可以使用:

在给定的情况下,您通常会使用以下方法获得每张票证的姓名数:

titanic['groupsize'] = titanic.groupby('Ticket').Name.transform('count')

详细说明了使用
groupby
进行
transform
的工作原理。

这将简化工作,但不确定是否更有效

for value in titanic['Ticket'].unique():
    titanic.loc[titanic['Ticket'] == value, 'groupSize'] = titanic['Ticket'].value_counts()[value]

您可以使用map而不是groupby

df['groupsize'] = df['ticket'].map(df['ticket'].value_counts())

请以文本形式而不是图像形式共享您的数据。感谢您的贡献。下面我得到了一些非常好的解决方案。太好了。谢谢。@MacMesser,请接受最有用的答案。它有助于关闭线程谢谢。今晚在做别的事情。我早就知道了!很高兴帮助你。请考虑解决问题的最有用的答案和/或答案。这有助于保持此网站的实用性,并确保其他有类似问题的用户能够快速找到答案。谢谢
df['groupsize'] = df['ticket'].map(df['ticket'].value_counts())