【问题标题】:groupby two columns based on third column values [duplicate]根据第三列值分组两列[重复]
【发布时间】:2021-01-27 11:37:39
【问题描述】:

我有一个这样的数据集

df = pd.DataFrame({'time':['13:30', '9:20', '18:12', '19:00', '11:20', '13:30', '15:20', '17:12', '16:00', '8:20'],
           'item': [coffee, bread, pizza, rice, soup, coffee, bread, pizza, rice, soup]})

我想产生这个输出

首先需要根据这些时间间隔将时间分成 3 类 早餐间隔为 (6,11],午餐为 (11,15],晚餐为 (15,20])。

这是我的代码:

df['hour'] = df.Time.apply(lambda x: int(x.split(':')[0]))
def time_period(hour):
    if hour >= 6 and hour < 11:
        return 'breakfast'
    elif hour >= 11 and hour < 15:
        return 'lunch'
    else:
        return 'dinner'
df['meal'] = df['hour'].apply(lambda x: time_period(x))

但我不知道如何执行“groupby”部分。

【问题讨论】:

  • 不要一次打开同一个问题。

标签: python group-by jupyter-notebook timestamp


【解决方案1】:

您可以简单地按“餐”分组并为每个“餐”创建项目列表。只需添加以下行即可-

df.groupby(['meal'])["item"].apply(list)

您可以在此基础上应用 count 和 all 来达到您想要的结果。

【讨论】:

    猜你喜欢
    • 2015-12-12
    • 2020-01-12
    • 2018-11-29
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多