ahb*_*bon 4 python numpy pandas
我有一个像这样的pandas数据框:
import pandas as pd
import numpy as np
data = {
"Type": ["A", "A", "B", "B", "B"],
"Project": ["X123", "X123", "X21", "L31", "L31"],
"Number": [100, 300, 100, 200, 500],
"Status": ['Y', 'Y', 'N', 'Y', 'N']
}
df = pd.DataFrame.from_dict(data)
Run Code Online (Sandbox Code Playgroud)
我想按类型进行分组,并获得计数和几个条件的总和,得到如下结果:
Type Total_Count Total_Number Count_Status=Y Number_Status=Y Count_Status=N Number_Status=N
A 2 400 2 400 0 0
B 5 800 1 200 2 600
Run Code Online (Sandbox Code Playgroud)
我试过以下但不完全是我需要的.请分享您可能有的任何想法.谢谢!
df1 = pd.pivot_table(df, index = 'Type', values = 'Number', aggfunc = np.sum)
df2 = pd.pivot_table(df, index = 'Type', values = 'Project', aggfunc = 'count')
pd.concat([df1, df2], axis=1)
Run Code Online (Sandbox Code Playgroud)
如果要创建函数:
def my_agg(x):
names = {
'Total_Count': x['Type'].count(),
'Total_Number': x['Number'].sum(),
'Count_Status=Y': x[x['Status']=='Y']['Type'].count(),
'Number_Status=Y': x[x['Status']=='Y']['Number'].sum(),
'Count_Status=N': x[x['Status']=='N']['Type'].count(),
'Number_Status=N': x[x['Status']=='N']['Number'].sum()}
return pd.Series(names)
df.groupby('Type').apply(my_agg)
Total_Count Total_Number Count_Status=Y Number_Status=Y Count_Status=N Number_Status=N
Type
A 2 400 2 400 0 0
B 3 800 1 200 2 600
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
682 次 |
| 最近记录: |