Python 如何使用Groupby计算pandas中两列中符合条件的行数
我有一个包含多列的数据框,其中4列是Python 如何使用Groupby计算pandas中两列中符合条件的行数,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个包含多列的数据框,其中4列是car,company\u name,id,和status。每个汽车都有一个相关的公司名称和状态,每个公司名称都链接到一个唯一的ID。一种可能的状态是租来的,我正试图统计每家公司租来的车的数量(在一个名为“租来的车”的新栏中),我一直在尝试使用他们唯一的ID来这样做 我尝试过使用groupby并应用,但没有成功 df['# of Rented Cars'] = df.groupBy('unique_id')['status'].apply(lambda x:
car
,company\u name
,id
,和status
。每个汽车
都有一个相关的公司名称
和状态
,每个公司名称
都链接到一个唯一的ID
。一种可能的状态是租来的,我正试图统计每家公司租来的车的数量(在一个名为“租来的车”的新栏中),我一直在尝试使用他们唯一的ID来这样做
我尝试过使用groupby
并应用,但没有成功
df['# of Rented Cars'] = df.groupBy('unique_id')['status'].apply(lambda x: (x=='Rented').sum())
以下表为例,您可以在“出租汽车”列中看到我想要的值:
但是使用上面的代码,我只得到最后一列中所有值的值Nan。我想您正在寻找
转换
df['# of Rented Cars'] = df.groupBy('unique_id')['status'].transform(lambda x: (x=='Rented').sum())
或不带lambda
df['# of Rented Cars'] = df['status'].eq('Rented').groupBy(df['unique_id']).transform('sum')
我认为您正在寻找
transform
df['# of Rented Cars'] = df.groupBy('unique_id')['status'].transform(lambda x: (x=='Rented').sum())
或不带lambda
df['# of Rented Cars'] = df['status'].eq('Rented').groupBy(df['unique_id']).transform('sum')