首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy datetime64提取月

Numpy datetime64提取月
EN

Stack Overflow用户
提问于 2022-05-17 09:58:10
回答 2查看 225关注 0票数 0

我有三维数据集,我希望只有一个月的日期,即numpy.datetime64('05-09')。知道怎么做吗?原始的3d数据集:

代码语言:javascript
复制
<xarray.DataArray (time: 153, lat: 281, lon: 481)>
array([[[5839.5454, 5839.581 , 5839.4844, ..., 5865.13  , 5865.8213,
         5865.933 ],
        [5838.614 , 5838.59  , 5838.548 , ..., 5864.121 , 5864.8354,
         5865.13  ],

       
       [[5853.7334, 5854.075 , 5854.291 , ..., 5882.3706, 5882.638 ,
         5882.379 ],
        [5853.297 , 5853.583 , 5853.858 , ..., 5882.602 , 5882.878 ,
         5882.687 ],

        ...,

        [5230.2534, 5230.2534, 5230.2534, ..., 5230.2534, 5230.2534,
         5230.2534]]], dtype=float32)
Coordinates:
  * lon      (lon) float64 -80.0 -79.75 -79.5 -79.25 ... 39.25 39.5 39.75 40.0
  * lat      (lat) float64 20.0 20.25 20.5 20.75 21.0 ... 89.25 89.5 89.75 90.0
  * time     (time) datetime64[ns] 2000-05-01 2000-05-02 ... 2000-09-30
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-17 11:45:27

作为一种选择,我可以建议从数组中创建一个数据框架。将数据帧更改为字符串帧,然后提取必要的元素。将数据转换为列表。但是,它将是一个字符串格式。如果您将它转换回datetime64,您将得到另一个东西。

代码语言:javascript
复制
 import numpy
 import pandas as pd

 aaa = [numpy.datetime64('2000-05-01T00:00:00.000000000'),
 numpy.datetime64('2000-05-02T00:00:00.000000000'),
 numpy.datetime64('2000-05-03T00:00:00.000000000'),
 numpy.datetime64('2000-05-04T00:00:00.000000000'),
 numpy.datetime64('2000-05-05T00:00:00.000000000'),
 numpy.datetime64('2000-05-06T00:00:00.000000000'),
 numpy.datetime64('2000-05-07T00:00:00.000000000'),
 numpy.datetime64('2000-05-08T00:00:00.000000000'),
 numpy.datetime64('2000-05-09T00:00:00.000000000')]

 df = pd.DataFrame(aaa, columns=['abc'])
 df['abc'] = df['abc'].astype('str').str[5:10]
 bbb = df['abc'].to_list()

输出

代码语言:javascript
复制
['05-01', '05-02', '05-03', '05-04', '05-05', '05-06', '05-07', '05-08', '12-01']

如果您对在库matplotlib中绘图感到满意的话。然后,在代码中,我将其设置为“格式化程序”,以便在x轴上只显示月和日。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib.dates
import numpy
import pandas as pd

aaa = [numpy.datetime64('2000-05-01T00:00:00.000000000'),
       numpy.datetime64('2000-05-02T00:00:00.000000000'),
       numpy.datetime64('2000-05-03T00:00:00.000000000'),
       numpy.datetime64('2000-05-04T00:00:00.000000000'),
       numpy.datetime64('2000-05-05T00:00:00.000000000'),
       numpy.datetime64('2000-05-06T00:00:00.000000000'),
       numpy.datetime64('2000-05-07T00:00:00.000000000'),
       numpy.datetime64('2000-05-08T00:00:00.000000000'),
       numpy.datetime64('2000-05-09T00:00:00.000000000')]

ttt = [1, 3, 7, 5, 10, 2, 5, 1, 7]

fig, ax = plt.subplots()
ax.plot(aaa, ttt)
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%m.%d"))
fig.autofmt_xdate()
plt.show()

票数 1
EN

Stack Overflow用户

发布于 2022-05-17 14:20:23

您可以简单地访问dt attribute

代码语言:javascript
复制
import numpy as np
import pandas as pd


first = np.datetime64('2000-05-01T00:00:00.000000000')
data = [first + np.timedelta64(i, 'D') for i in range(10)]
df = pd.DataFrame(data, columns=['full'])

df['Y'] = df['full'].dt.year
df['M'] = df['full'].dt.month
df['D'] = df['full'].dt.day
print(df)
#         full     Y  M   D
# 0 2000-05-01  2000  5   1
# 1 2000-05-02  2000  5   2
# 2 2000-05-03  2000  5   3
# 3 2000-05-04  2000  5   4
# 4 2000-05-05  2000  5   5
# 5 2000-05-06  2000  5   6
# 6 2000-05-07  2000  5   7
# 7 2000-05-08  2000  5   8
# 8 2000-05-09  2000  5   9
# 9 2000-05-10  2000  5  10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72271905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档