gpt4 book ai didi

python - 在 Pandas 中按日期字符串排序 - Python 2.7

转载 作者:行者123 更新时间:2023-11-28 22:52:34 27 4
gpt4 key购买 nike

我有 .csv 数据,我想按日期列对其进行排序。我的日期格式如下:

周、季度、年:例如 WK01Q12001

当我在此列上对我的数据框进行 .sort() 时,结果排序如下:

WK01Q12001, WK01Q12002, WK01Q12003, WK01Q22001, WK01Q22002, WK01Q22003, ... WK02Q12001, WK02Q12002...

例如。这是有道理的,因为它按升序对字符串进行排序。

但我需要按时间顺序对数据进行排序,以便结果如下所示:

WK01Q12001, WK02Q12001, WK03Q12001, WK04Q12001, ... , WK01Q22001, WK02Q22001, ... WK01Q12002, WK02Q22002 ...

如何使用 pandas 以这种方式对其进行排序?也许反向排序字符串? (从右到左)或创建某种日期时间对象?

我也尝试过使用 Series():pd.Series([pd.to_datetime(d) for d in weeklyData['Date']])但是结果和上面的.sort()方法是一样的。

更新:我的 DataFrame 在格式上类似于 Excel 工作表,目前看起来如下所示。我想按“日期”按时间顺序排序。

Date          Price     Volume
WK01Q12001 32 500
WK01Q12002 43 400
WK01Q12003 55 300
WK01Q12004 58 350
WK01Q22001 33 480
WK01Q22002 40 450
.
.
.
WK13Q42004 60 400

最佳答案

您可以向数据框添加一个新列,其中包含日期组件作为列表。

例如

a = ["2001", "Q2", "WK01"]
b = ["2002", "Q2", "WK01"]
c = ["2002", "Q2", "WK02"]

因此,您可以对数据框应用一个函数来执行此操作...

def tolist(x):
g = re.match(r"(WK\d{2})(Q\d)(\d{4})", str(x))
return [g.group(3), g.group(2), g.group(1)]

然后...

 df['datelist'] = df['Date'].apply(tolist)

它将您的日期作为按重要性顺序排列的列表...

         Date  Price  Volume          datelist
0 WK01Q12001 32 500 [2001, Q1, WK01]
1 WK01Q12002 22 400 [2002, Q1, WK01]
2 WK01Q12003 42 500 [2003, Q1, WK01]

在 Python 中比较等长列表时,比较运算符表现良好。因此,您可以使用标准的 DataFrame 排序来排序数据。

因此,当您这样做时,Pandas 系列中的默认排序将正常工作...

df.sort('datelist')

关于python - 在 Pandas 中按日期字符串排序 - Python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com