我们必须根据给定的列名(列名列表)对它进行分组。之后,应打印具有指定列值的组数据。输入将包含两行。 第一行将有一个列列表 第二个将具有值列表。 输出应具有相应组的前五行。
我需要使用打印命令来打印数据框。
样本输入:
['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
答案 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