Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据变量条件计算记录数_Python_Pandas - Fatal编程技术网

Python 根据变量条件计算记录数

Python 根据变量条件计算记录数,python,pandas,Python,Pandas,我有一个数据框,如下所示: dashboard = pd.DataFrame({ 'id':[1,1,1,1,1,2,2,3,3,4,4], 'level': [1,2,2.1,2.2,3,3.1,4,1.1,2,3,4], 'cost': [10,6,4,8,9,6,11,23,3,2,12], 'category': ['Original', 'Time', 'Money','Original','Original','Time','Original','Original','Tim

我有一个数据框,如下所示:

dashboard = pd.DataFrame({
 'id':[1,1,1,1,1,2,2,3,3,4,4],
 'level': [1,2,2.1,2.2,3,3.1,4,1.1,2,3,4],
 'cost': [10,6,4,8,9,6,11,23,3,2,12],
 'category': ['Original', 'Time', 'Money','Original','Original','Time','Original','Original','Time','Original','Original']
})
我需要得到下表,其中,例如,如果级别为3,则代码将对之前的所有级别进行求和,仅为2.2,2.1-不包括2:

pd.DataFrame({
 'id': [1,2,3,4],
 'level': [3,4,2,4],
 'cost': [12,6,23,0],
 'category': ['Time & Money','Time','Time','']
})

你可以这样做

df2 = dashboard.groupby('id')['level'].last().astype(int).reset_index()
df2['cost'] = dashboard.groupby('id').apply(lambda x: x[x['level']>=(x['level'].tail(1)-0.9).sum()]['cost'].sum()-x['cost'].tail(1)).reset_index(drop=True)
df2['category'] = dashboard.groupby('id').apply(lambda x: x[x['level']>=(x['level'].tail(1)-0.9).sum()].groupby('id')['category'].agg(' & '.join)).reset_index(drop=True).replace('Original','', regex=True).str.strip((' & '))
df2
输出输入&您提供的输出不适用于“category”列

id  level   cost    category
0   1   3   12      Money
1   2   4   6       Time
2   3   2   23      Time
3   4   4   0   
欢迎来到StackOverflow,和在这里申请。