gpt4 book ai didi

python - 在 Pandas 中将月份从数字重命名为名称

转载 作者:行者123 更新时间:2023-12-03 18:13:52 27 4
gpt4 key购买 nike

我有以下数据框:

High    Low Open    Close   Volume  Adj Close   year    pct_day
month day
1 1 NaN NaN NaN NaN NaN NaN 2010.0 0.000000
2 7869.853149 7718.482498 7779.655014 7818.089966 7.471689e+07 7818.089966 2010.0 0.007826
3 7839.965652 7719.758224 7775.396255 7777.940002 8.185879e+07 7777.940002 2010.0 0.002582
4 7747.175260 7624.540007 7691.152083 7686.288672 1.018877e+08 7686.288672 2010.0 -0.000744
5 7348.487095 7236.742135 7317.313616 7287.688546 1.035424e+08 7287.688546 2010.0 -0.002499
... ... ... ... ... ... ... ... ... ...
12 27 7849.846680 7760.222526 7810.902051 7798.639258 4.678145e+07 7798.639258 2009.5 -0.000833
28 7746.209996 7678.152204 7713.497907 7710.449358 4.187133e+07 7710.449358 2009.5 0.000578
29 7357.001540 7291.827806 7319.393874 7338.938345 4.554891e+07 7338.938345 2009.5 0.003321
30 7343.726938 7276.871507 7322.123779 7302.545316 3.967812e+07 7302.545316 2009.5 -0.000312
31 NaN NaN NaN NaN NaN NaN 2009.5 0.000000

由于从上面粘贴的数据框中不清楚,下面是一个快照:

enter image description here

月份在 1,2 3 ... 是否可以将月份索引重命名为 Jan Feb Mar 格式?

编辑 :

我很难实现@ChihebNexus 的示例

我的代码如下,因为它是一个日期时间:
full_dates = pd.date_range(start, end)
data = data.reindex(full_dates)
data['year'] = data.index.year
data['month'] = data.index.month
data['week'] = data.index.week
data['day'] = data.index.day
data.set_index('month',append=True,inplace=True)
data.set_index('week',append=True,inplace=True)
data.set_index('day',append=True,inplace=True)
df = data.groupby(['month', 'day']).mean()

最佳答案

我会使用日历和 pd.CategoricalDtype 来确保排序正常工作。

import pandas as pd
import numpy as np
import calendar

#Create dummy dataframe
dateindx = pd.date_range('2019-01-01', '2019-12-31', freq='D')

df = pd.DataFrame(np.random.randint(0,1000, (len(dateindx), 5)),
index=pd.MultiIndex.from_arrays([dateindx.month, dateindx.day]),
columns=['High', 'Low','Open', 'Close','Volume'])

#Use calendar library for abbreviations and order
dd=dict((enumerate(calendar.month_abbr)))

#rename level zero of multiindex
df = df.rename(index=dd,level=0)

#Create calendar month data type with order for sorting
cal_dtype = pd.CategoricalDtype(list(calendar.month_abbr), ordered=True)

#Change the dtype of the level zero index
df.index = df1.index.set_levels(df.index.levels[0].astype(cal_dtype), level=0)
df

输出:
        High  Low  Open  Close  Volume
Jan 1 501 720 671 943 586
2 410 67 207 945 284
3 473 481 527 415 852
4 157 809 484 592 894
5 294 38 458 62 945
... ... ... ... ... ...
Dec 27 305 354 347 0 726
28 764 987 564 260 72
29 730 151 846 137 118
30 999 399 634 674 81
31 347 980 441 600 676

[365 rows x 5 columns]

关于python - 在 Pandas 中将月份从数字重命名为名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61842649/

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