如何分组和删除指定行

2024-04-18 21:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个DF:

id     company     duration
0    Other Company    5
0    Other Company    19
0    X Company        7
1    Other Company    24
1    Other Company    6
1    X Company        12
2    X Company        9
3    Other Company    30
3    X Company        16

我需要将DF按ID和Company分组,然后对每个DF的持续时间求和。最后,我只需要“X Company”的值。我就是这么做的:

import pandas as pd
jobs = pd.read_csv("data/jobs.csv")
time_in_company = jobs.groupby(['id','company'])['duration'].agg(sum)

得到这个:

id     company     duration
0    Other Company    24
0    X Company        7
1    Other Company    30
1    X Company        12
2    X Company        9
3    Other Company    30
3    X Company        16

现在我需要删除“其他公司”的所有条目。已经尝试使用时间_公司.drop('Any Company')#Return key错误'Any Company'

试图设置索引('company'),以便尝试其他操作,但它告诉我'Series'对象没有属性'set\u index'

试图在groupby中使用.filter(),但我需要.agg(sum)。(反正也没用。。你知道吗

有人能帮我解释一下这个问题吗?提前谢谢。你知道吗


Tags: csviddfjobs公司anycompanyagg
2条回答

首先使用pd.query()删除“X Company”行,然后使用groupby删除其余的df,如:

import numpy as np
import pandas as pd


ids = [0,0,0,1,1,1,2,3,3]
company = ['Other Company','Other Company','X Company','Other Company','Other Company','X Company','X Company','Other Company','X Company']
duration = [5,19,7,24,6,12,9,30,16]

df = pd.DataFrame({'ids':ids,'company':company,'duration':duration})


df.query("company=='Other Company'").groupby(['ids','company'])['duration'].agg(sum)

你会得到:

ids  company      
0    Other Company    24
1    Other Company    30
3    Other Company    30
Name: duration, dtype: int64

编辑:此外,您可以使用pd.where()dropna()pd.pivot_table()的组合:

df.where(df['company']=='Other Company').dropna().pivot_table(['duration'],index=['ids','company'],aggfunc='sum')

你会得到:

duration
ids company                
0.0 Other Company      24.0
1.0 Other Company      30.0
3.0 Other Company      30.0

尽管如此,第一个更快:
每个回路2.03 ms±62.3µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路5.87 ms±23.4µs(7次运行的平均值±标准偏差,每个100个回路)

这有用吗?你知道吗

time_in_company= time_in_company.reset_index(level='company')
time_in_company [time_in_company ['company']!="Other Company"] 

相关问题 更多 >