gpt4 book ai didi

python - Pandas Multiindex 到单列中的月日格式

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:17 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,它有一个多索引月,然后是日,然后是一列数据值,看起来像这样:

      Data
1 1 6
2 10
3 11
4 12
5 50
...
12 1 3
2 4
3 10
4 11

你明白了。我已经分组了月份和日期。我想制作一个新列来一起格式化月份 - 日期。但似乎无法弄清楚。期望的输出看起来像这样:

M-D Data 
1-01 6
1-02 10
1-03 11
1-04 14
1-05 50

谁能为此提供最佳解决方案?注意:我之前使用以下代码创建了索引,也许我需要回去做一些重组?我将其设为多索引以便找到 min() 值。原始的“月”和“日”列在 10 年的跨度内有月和日,我只需要这 10 年中的最小值,因此需要 groupby()。

dframe['Date'] = pd.to_datetime(dframe['Date'])
dframe['Month'], dframe['Day'] = dframe['Date'].dt.month,
dframe['Date'].dt.day
finaldf = dframe.groupby(['Month','Day'])['Data_Value'].min()
df = pd.DataFrame(finaldf)

提前致谢!

最佳答案

如果你需要把月和日格式化为m-d,那么从一开始就不分开是比较合理的做法,比如你可以格式化Date列为 %m-%d,按此变量分组并进行所需的聚合:

dframe.groupby(pd.to_datetime(dframe['Date']).dt.strftime('%m-%d'))['Data_Value'].min()

一个简短的例子:

dframe = pd.DataFrame({
'Date': ['2017-08-01', '2016-08-01', '2017-08-02'],
'Data_Value': [2,3,4]
})

dframe.groupby(pd.to_datetime(dframe['Date']).dt.strftime('%m-%d'))['Data_Value'].min()

#Date
#08-01 2
#08-02 4
#Name: Data_Value, dtype: int64

关于python - Pandas Multiindex 到单列中的月日格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996833/

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