【问题标题】:how to make a pandas dataframe column into a datetime object showing just the date to correctly sort如何将 pandas 数据框列变成日期时间对象,仅显示正确排序的日期
【发布时间】:2015-01-30 06:10:51
【问题描述】:

当我在包含

的数据框 (df) 中对 month_date 进行排序时

[2014-06-01, 2014-07-01, 2014-08-01,2014-09-01,2014-10-01] 我得到以下信息:

result = df.sort(['month_date'], ascending=True) 

但是结果是(按此顺序):

10, 6、 7、 8、 9、

而我预计是 6、7、8、9、10

这可能是因为我没有指定 month_date 列应该是一个日期时间对象(并且只包含日期而不包含时间组件。

如何将数据框中的 month_date 列转换为 datetime 对象,该对象仅包含 pandas 理解的日期,因此按以下顺序排序: 6、 7、 8、 9、 10,

更新 - 下面是 YS-L 正确答案

df = pd.DataFrame({'month_date': ['2014-06-01', '2014-01-01', '2014-08-01','2014-09-01','2014-10-01']})
df['month_date'] = pd.to_datetime(df['month_date'])
print df.sort(['month_date'], ascending=True)

【问题讨论】:

    标签: python sorting datetime pandas


    【解决方案1】:

    您可以使用pandas.to_datetime将该列转换为日期时间类型,然后进行排序:

    df = pd.DataFrame({'month_date': ['2014-06-01', '2014-01-01', '2014-08-01','2014-09-01','2014-10-01']})
    df['month_date'] = pd.to_datetime(df['month_date'])
    print df.sort(['month_date'], ascending=True)
    

    输出:

               month_date
    1 2014-01-01 00:00:00
    0 2014-06-01 00:00:00
    2 2014-08-01 00:00:00
    3 2014-09-01 00:00:00
    4 2014-10-01 00:00:00
    

    【讨论】:

    • YS-L 所以这将替换现有的 month_date 列而不是创建另一个,日期格式的日期作为日期时间对象?
    • 是的,由于上面的第二行代码,原来的列将被替换。您可以确定生成的 DataFrame 的 dtypes。
    • YS-L --> 太棒了!如何检查列的数据类型?
    • 使用df.dtypes检查数据类型。要进行嵌套排序,只需将列名列表传递给sort 函数(see doc)
    • 谢谢! YS-L 当dtypes返回对象时,这是否意味着它是一个文本字符串?我们怎么知道“对象”是什么?
    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 2021-04-05
    • 2013-01-06
    • 2021-12-27
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多