【问题标题】:How to do groupby in pandas with part of date string?如何使用部分日期字符串在熊猫中进行分组?
【发布时间】:2012-06-14 02:20:27
【问题描述】:
        Date Description 
0  6/09/2012      Amazon
1  6/09/2012      iTunes
2  6/08/2012      iTunes
3  6/08/2012    Building
4  6/08/2012   Slicehost

我有一个像上面那样的DataFrame。我可以使用这样的函数 get_day() 选择上述日期字符串的日期部分:

def get_day(date_string):
    d = datetime.strptime(date_string, '%m/%d/%Y')
    return d.day

现在我如何将此函数传递给上面的 DataFrame 以获取 groupby 在当天而不是 datestring 本身。通过查看文档无法弄清楚。任何帮助表示赞赏。

【问题讨论】:

    标签: python group-by pandas


    【解决方案1】:
    df.groupby(get_day)
    

    但无论如何我都会先将日期字符串转换为日期时间对象。

    另一个问题是您调用 .day 会返回一个月中的某一天(数字 1-31)。你可能想打电话给.date()

    def get_day(date_string):
        return datetime.strptime(date_string, '%m/%d/%Y').date()
    

    或直接

    df.groupby(lambda x: datetime.strptime(date_string, '%m/%d/%Y').date())
    

    【讨论】:

    • 我想我的问题是该列的索引不是日期,而是旁边的那些数字。假设我们有 def print_given(given): print 而不是 get_day,我们执行 df.groupby(print_given) 我看到 0,1,2... 打印而不是 6/09/2012 等。
    猜你喜欢
    • 2020-09-05
    • 2013-10-26
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多