Python 根据组条件选择记录

Python 根据组条件选择记录,python,python-3.x,pandas,Python,Python 3.x,Pandas,我是Python新手(使用Anaconda w/Python v3.4.3),在任何地方都找不到这个答案,但它似乎非常重要,我必须以错误的方式进行 import pandas as pd url = 'https://raw.github.com/pydata/pandas/master/pandas/tests/data/tips.csv' tips = pd.read_csv(url) tips.head(5) Out[1]: total_bill tip sex smok

我是Python新手(使用Anaconda w/Python v3.4.3),在任何地方都找不到这个答案,但它似乎非常重要,我必须以错误的方式进行

import pandas as pd
url = 'https://raw.github.com/pydata/pandas/master/pandas/tests/data/tips.csv'
tips = pd.read_csv(url)
tips.head(5)
Out[1]:
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4
我想选择
组中至少有50条记录的记录

sel_days = tips.groupby("day").size() > 50
sel_days
Out[2]: 
day
Fri     False
Sat      True
Sun      True
Thur     True
dtype: bool
我看到这是一个系列,但似乎不知道如何生成一个布尔序列来从原始集合
tips
中选择行

type(sel_days)
Out[3]: pandas.core.series.Series
print(x in sel_days for x in tips["day"])
<generator object <genexpr> at 0x0000000007DBDFC0>
类型(选择天数)
Out[3]:pandas.core.series.series
打印(x英寸选择天数,x英寸提示[“天”])
我该怎么做?

您想:


我将向映射布尔掩码的
tips
数据帧添加一个新列:

tips['mask'] = tips['day'].map(sel_days)
然后仅选择真值:

tips = tips[tips['mask']]
tips = tips[tips['mask']]