按数据框分组并查找组

时间:2019-10-31 21:02:43

标签: python-3.x pandas

我们必须根据给定的列名(列名列表)对它进行分组。之后,应打印具有指定列值的组数据。输入将包含两行。 第一行将有一个列列表 第二个将具有值列表。 输出应具有相应组的前五行。

我需要使用打印命令来打印数据框。

样本输入:

['Pclass','Age']
[3,13]

输出:

        PassengerId  Pclass               Name           Sex   Age  
154         1046       3   Asplund, Master. Filip Oscar  male  13.0 
392         1284       3  Abbott, Master. Eugene Joseph  male  13.0 

1 个答案:

答案 0 :(得分:2)

GroupBy.get_group

import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame({'Pclass': np.random.choice(range(10), 200),
                   'Age': np.random.choice(range(20), 200),
                   'Val': np.random.normal(0, 1, 200)}
                  )
cols = ['Pclass','Age']
keys = [3, 13]

df.groupby(cols).get_group(tuple(keys))
#     Pclass  Age       Val
#139       3   13  1.237816
#197       3   13 -1.035242

如果您要处理可能只有一个元素的任意列表,那么上面的内容就会出错,因为我们仅在有多个键时才需要提供一个元组。

def get_grp(df, cols, keys):
    if len(keys) > 1:
        keys = tuple(keys)
    else:
        keys = keys[0]

    return df.groupby(cols).get_group(keys)

get_grp(df, cols, keys)  # Same output as above