python - 具有多个条件和操作的 groupby
问题描述
我有一个问题,我想分组并在数据帧上做一些操作。输入数据框是这样的:
我想根据 unique_id 进行分组,但如果有两个观察值,我需要一个唯一 ID 中的两行。1 个 unique_ID 中可能有任意数量的观察
预期输出:
我试图计算它的数量和其他列以帮助 groupby,但我没有为我工作。
df["Count_ob"] = df.groupby("Unique_ID")["IF_car_history"].sum()
帮助被appriciated。谢谢
解决方案
df = pd.DataFrame({'Unique_id':[1,1,2,2,3,3,3,3],
'Car_history':[0,1,0,1,0,1,0,1],
'Value':[1000,1500,1000,1200,800,700,1300,1700],
'Ob_id':[0,1,0,2,0,3,0,4]})
df["Count_ob"] = df.Ob_id[::-1].cumsum()[::-1] # <=== this do the trick!!!
df["Count_ob"] = df["Count_ob"].max() - df["Count_ob"]
df = df.groupby("Count_ob")[["Unique_id","Car_history","Value","Ob_id"]].agg({'Unique_id':'max',
'Car_history':'sum',
'Value':'sum',
'Ob_id':'sum'}).reset_index(drop=True)
df['Value'] = df.groupby('Unique_id')['Value'].cumsum().values
推荐阅读
- ios - 向按钮添加布局约束
- ansible - Ansible 获取带点的变量
- php - Laravel 重置密码添加 where 条件
- azure-active-directory - 如何保护 Azure Active Directory 服务主体?
- swift - NSCollectionViewItems renders incorrectly after updating data and calling NSCollectionView.reloadData()
- c++ - ld:未找到架构 x86_64 的符号 clang:错误:
- kotlin - 如何通过Kotlin中的函数传递运算符参数
- c# - 使用 MVVM 创建动态控件
- c# - 自适应卡片作为 Formflow 提示
- java - 多个 Java 对象到单个端点