【问题标题】:Python : Replace a column in a dataframe by datetime valuesPython:用日期时间值替换数据框中的列
【发布时间】:2023-01-31 21:09:10
【问题描述】:

我正在尝试用我处理的日期时间值替换一列 4 列的数组。问题是很难在不同格式的数据框、数组、....之间保持相同的形式。


dataw = ds.variables["pr"][:]
dataw = np.array(dataw[:,0,0])
lat = ds.variables["lat"][:]
long = ds.variables["lon"][:]
time = ds.variables["time"][:]

time = pd.to_datetime(ds.variables["time"][:],origin=pd.Timestamp('1850-01-01'),unit='D')
#np.datetime64(ds.variables["time"][:],'D')
x2 = pd.DataFrame(np.zeros((len(dataw),4), float))
x = np.zeros((len(dataw),4), float)


x[:,0] = time
x[:,1] = long
x[:,2] = lat[:]
x[:,3] = dataw[:]*86400


x=pd.DataFrame(x)
x[:,0] = pd.to_datetime(time,origin=pd.Timestamp('1850-01-01'),unit='D')

如果我直接将转换后的日期放入数组中,结果如下:1.32542e+18

我试过了

time = ds.variables["time"][:]

并将其包含在数组中,然后使用

x[:,0]=pd.to_datetime(x[:,0],origin=pd.Timestamp('1850-01-01'),unit='D')

我收到错误:

TypeError: unhashable type: 'slice'

我试过也直接放:

time=pd.to_datetime(time,origin=pd.Timestamp('1850-01-01'),unit='D')
x[:,0] = time[:]
TypeError: unhashable type: 'slice'

【问题讨论】:

    标签: arrays pandas dataframe numpy netcdf


    【解决方案1】:

    试试这个

            import numpy as np
        import pandas as pd
        
        dataw = ds.variables["pr"][:]
        dataw = np.array(dataw[:, 0, 0])
        lat = ds.variables["lat"][:]
        long = ds.variables["lon"][:]
        time = ds.variables["time"][:]
        
        time = np.datetime64(time, 'D')
    x = np.zeros((len(dataw), 4), dtype='datetime64[D]')
        x[:, 0] = time
        x[:, 1] = long
        x[:, 2] = lat
        x[:, 3] = dataw * 86400
        
        df = pd.DataFrame(x, columns=["Time", "Longitude", "Latitude", "Data"])
    

    【讨论】:

    • 这种情况下的问题是我丢失了日期时间格式并且我得到的值是“1.32542e+18”
    • 之所以将日期显示为“1.32542e+18”是因为numpy数组x是float类型,datetime对象不支持float类型。要解决此问题,您可以在创建 DataFrame 之前将整个 x 数组转换为 numpy datetime64 类型:
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2019-06-24
    • 2021-11-23
    • 1970-01-01
    • 2019-05-12
    • 2017-08-03
    相关资源
    最近更新 更多