如何选择和重命名子列并从 Pandas 数据框中删除主列

时间:2021-07-31 02:25:13

标签: python pandas dataframe pandas-groupby

我正在使用熊猫数据框。我已经使用自定义聚合编写了代码。

#include <iostream>
using namespace std;

int main() {
    int cv;
    cout<<"Cuantas personas van a participar? "<< endl;
    cin>> cv ;
    char nombres[cv]{};
    for(int x = 1; x<=cv; x++){
        cin>>nombres[x];
        cout<<nombres[x]<< endl;
    }
    return 0;
}

输出就像

import pandas as pd
from functools import reduce

data = {'item': ['d1','d1','d1','d1','d1','d1','d1','d1','d1','d1'], 'price': [65,52,93,74,46,67,62,50,49,41]}
df = pd.DataFrame(data)

def pass_percent(series):
    obtained_total=0
    grand_marks=0
    for mark in series:
        if mark>=35:
            obtained_total = obtained_total + mark
            grand_marks = grand_marks + 1
    return (obtained_total/(grand_marks*100))*100


df1 = df.groupby('dept').agg({'marks': ['sum', pass_percent]})

print(df1)

拥有这样的数据框是什么意思。该怎么做?

           marks
       sum     pass_percent
dept
d1     599         59.9

1 个答案:

答案 0 :(得分:2)

您可以在 agg() 方法中使用命名元组:

df1=df.groupby('item').agg(total=('price','sum'),final_pass_percent=('price',pass_percent))

聚合后分两步更改列名:

df1=df.groupby('item').agg({'price': ['sum', pass_percent]})
df1.columns=['total','final_pass_percent']

df1 的输出:

        total   final_pass_percent
item        
d1      599     59.9