gpt4 book ai didi

Python2.7 : FIlter out group from dataframe based on condition in groupby

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:52 25 4
gpt4 key购买 nike

我有一个数据框,我想进一步过滤数据框,以仅包含其行在列中没有特定值的组

例如,在数据框中,由于汉密尔顿在他的第 1 站的第 3 圈中超车,我想从下面的数据框中删除汉密尔顿第 1 站的所有单圈时间记录。

我想到先进行groupby,然后进行get group,迭代组中的每一行,检测“clear lap?”中的非空值。列,并在新列中为 groupby 中的所有行标记“yes”,然后过滤掉该组。

是否有更快的方法来对数据框进行子集化?

数据框:

    name                   driverRef stint  tyre      lap   pos     clear lap?
0 Australian Grand Prix vettel 1.0 Super soft 2 1 NaN
1 Australian Grand Prix vettel 1.0 Super soft 3 1 NaN
2 Australian Grand Prix vettel 1.0 Super soft 4 1 NaN
3 Australian Grand Prix ham 1.0 Super soft 2 3 NaN
4 Australian Grand Prix ham 1.0 Super soft 3 2 overtook
5 Australian Grand Prix ham 1.0 Super soft 4 2 NaN

最佳答案

我相信您需要通过过滤来获取所有组,然后通过 isin 再次过滤:

通知:谢谢@Vivek Kalyanarangan unique 的改进.

a = df.loc[df['clear lap?'].notnull(), 'driverRef'].unique()
print (a)
['ham']

df = df[~df['driverRef'].isin(a)]
print (df)
name driverRef stint tyre lap pos clear lap?
0 Australian Grand Prix vettel 1.0 Super soft 2 1 NaN
1 Australian Grand Prix vettel 1.0 Super soft 3 1 NaN
2 Australian Grand Prix vettel 1.0 Super soft 4 1 NaN

另一种解决方案,速度较慢:

df = df[df['clear lap?'].isnull().groupby(df['driverRef']).transform('all')]

或者最慢:

df = df.groupby('driverRef').filter(lambda x: x['clear lap?'].isnull().all())

关于Python2.7 : FIlter out group from dataframe based on condition in groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48971488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com