python - 如何在 python 中对这个数据框进行分组?
问题描述
我有这个问题:
import pandas as pd
stripline = "----------------------------"
rawData = {
'order number': ['11xa', '11xa', '11xa', '21xb', '31xc'],
'working area': ['LLA', 'LLE', 'LLS', 'MLA', 'MLE'],
'time': [1, 6, 13, 35, 24]
}
df = pd.DataFrame(rawData)
print("original data:")
print(df.head())
print(stripline)
rawData2 = {
'order number': ['11xa', '21xb', '31xc'],
'working area': ['LLS', 'MLA', 'MLE'],
'time': [20, 35, 24]
}
df2 = pd.DataFrame(rawData2)
print("expected result:")
print("group after order number, sum all times to that order and choose working field with the biggest time")
print(df2.head())
如何操作我的数据框 df 以获取 df2?
我想总结时间列中与订单号相对应的所有值。我想使用时间最长的工作领域,特别是我想保留其余的数据。新的数据框有三阶,旧的一阶五阶。
解决方案
import pandas as pd
rawData = {
'order_number': ['11xa', '11xa', '11xa', '21xb', '31xc'],
'working_area': ['LLA', 'LLE', 'LLS', 'MLA', 'MLE'],
'time': ['1', '6', '13', '35', '24']
}
df = pd.DataFrame(rawData)
df['time'] = df['time'].apply(int)
df = df.groupby('order_number', as_index=False).apply(lambda g: g.assign(sum=g.time.sum()))
df.groupby('order_number', ascending=False).apply(lambda x: x.sort_values('time').head(1)).reset_index(drop=True)
给你
order_number working_area time sum
0 11xa LLA 1 20
1 21xb MLA 35 35
2 31xc MLE 24 24
推荐阅读
- python - 查询范围和列表python
- google-cloud-pubsub - GCP PubSub - 广播消息 - 只有相关订阅者处理消息
- google-cloud-platform - 如何在我自己的网站中使用 Google Cloud API 并对其进行控制
- javascript - 如何使用javascript向服务器发送数据
- javascript - 如何使用 javascript 更新 django 中的字段
- python - Pandas 为新列中的组生成数字序列
- angular - 两种方式绑定 FormGroup 选择与对象
- python - 如何使用 python 在网站上获取标题
- pandas - 按窗口扩展分组以计算 nunique
- docker - Nextjs v.10 getstaticprops“重新验证”停止在 docker 容器上工作