猿问

如何在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?


我想总结时间列中与订单号对应的所有值。我想使用时间最长的工作字段,特别是我想保留其余的数据。新的数据框有 3 个订单,旧的有 5 个。


HUX布斯
浏览 216回答 3
3回答

catspeake

import pandas as pdrawData = {    '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  sum0         11xa          LLA     1   201         21xb          MLA    35   352         31xc          MLE    24   24

胡子哥哥

rawData = {    'order number': ['11xa', '11xa', '11xa', '21xb', '31xc'],    'working area': ['LLA', 'LLE', 'LLS', 'MLA', 'MLE'],    'time': ['1', '6', '13', '35', '24']}dataframe = pd.DataFrame(rawData)dataframe['time'] = dataframe['time'].astype(int)dataframe.groupby(['order number']).sum().reset_index()输出order number    time0     11xa     201     21xb     352     31xc     24
随时随地看视频慕课网APP

相关分类

Python
我要回答