繁体   English   中英

如何对包含日期列表的数据框中的列进行排序?

[英]How to sort a column in a dataframe containing a list of dates?

我有一个包含与包含日期列表的列关联的列id的数据框。 这些列可以包含 1 个或多个日期,但它们没有排序。 如何按时间顺序对列dates的每一行进行排序?

data = [
    [
        1,
        [
            "2017-12-06",
            "2017-12-05",
            "2017-12-06",
            "2018-01-03",
            "2018-01-04",
            "2017-11-24",
        ],
    ],
    [
        2,
        [
            "2017-12-06",
            "2017-12-05",
            "2017-12-06",
            "2019-01-03",
        ],
    ],
]
df = pd.DataFrame(data, columns=["id", "dates"])
df


id  dates
1   [2017-12-06, 2017-12-05, 2017-12-06, 2018-01-03, 2018-01-04, 2017-11-24]
2   [2017-12-06, 2017-12-05, 2017-12-06, 2019-01-03]

我想要什么(按时间顺序排列的日期):

id  dates
1   [2017-11-24, 2017-12-05, 2017-12-06, 2018-01-03, 2018-01-04]
2   [2017-12-05, 2017-12-06, 2019-01-03]

我尝试过的(没有奏效):

f = lambda x: x.sort(key=lambda date: datetime.strptime(date, "%Y-%m-%d"))
df["dates"].apply(f)

(这将返回所有None

尝试就地对列表进行排序:

df["dates"].apply(list.sort)
print(df)

印刷:

   id                                                                     dates
0   1  [2017-11-24, 2017-12-05, 2017-12-06, 2017-12-06, 2018-01-03, 2018-01-04]
1   2                          [2017-12-05, 2017-12-06, 2017-12-06, 2019-01-03]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM