带过滤器的汇总数据框

时间:2020-09-25 22:53:14

标签: python python-3.x pandas dataframe

在大熊猫中是否可以使用“ NamedAgg”方法进行过滤?

这是我的示例代码:

df = pd.DataFrame({'Person': ['John','Paul','John','Paul','Taylor'],
                   'animal': ['cat', 'dog', 'cat', 'dog','dog'],
                   'from' : ['breeder','adoption','adoption','breeder','wild'],
                   'height': [9.1, 6.0, 9.5, 34.0,55],
                   'weight': [7.9, 7.5, 9.9, 198.0,200]})

df.groupby(['Person']).agg(
    number_of_animal = pd.NamedAgg(column = 'animal', aggfunc = 'count'),
    number_of_from = pd.NamedAgg(column = 'from', aggfunc = 'count'),
    total_height = pd.NamedAgg(column = 'height', aggfunc = 'sum'),
    total_weight = pd.NamedAgg(column = 'weight', aggfunc = 'sum')
    )

result = pd.DataFrame({'Person': ['John','Paul','Taylor'],
                        'number_of_animal':[2,0,0],
                        'number_of_from': [1,1,0],
                        'total_height':[0,34,55],
                        'total_weight':[17.8,205.5,200]})

对于每个单独的列,我想应用一个过滤器,例如,我想过滤“ number_of_animal” df['animal'] == 'cat'和“ total_hight” df['height'] > 10和number_of_from df['from'] == 'breeder的位置

1 个答案:

答案 0 :(得分:1)

使用DataFrame.assign将替换后的不匹配值重新分配给Series.where中的<ul> <li><a href="">Item1</a></li> <li><a href="">Item2</a></li> <li><a href="">Item3</a></li> <li><a href="">Item4</a></li> <li><a href="">Item5</a></li> </ul>

NaN