提取txt中二维索引变量,并写入nc文件

import pandas as pd
import numpy as np
import netCDF4 as nc

# 读取txt文件
file = r'D:\Desktop\root\runoff\runoff.txt'
with open(file, 'r') as f:
    data = pd.read_table(file, sep="\s+", header=None, names=["x", "y", "dat"], low_memory=False) # 读取txt并分隔
    data = pd.DataFrame(data)
    duplicate = data.duplicated(subset=['x', 'y'], keep=False) # 按"x","y"提取重复索引
    duplicate_data = data.loc[duplicate, :]
    duplicate_data['dat'] = duplicate_data['dat'].astype(float) # 将数据转化为浮点数,索引转换为整数类型
    duplicate_data['x'] = duplicate_data['x'].astype(int)
    duplicate_data['y'] = duplicate_data['y'].astype(int)
    duplicate_data_sum = duplicate_data.groupby(by=['x', 'y'], as_index=False).agg({'dat': sum}) # 按相同索引将重复值求和
    # print(duplicate_data_sum)
    # duplicate_data_sum.to_csv('D:/Desktop/out_runoff.txt', index=False, sep=' ', encoding='utf_8_sig')

# 将DataFrame文件写入二维数组
nc_list = np.full((159, 159), np.nan) # 创建全nan数组
for i in range(len(duplicate_data_sum)):
    # print(duplicate_data_sum['x'][i], '\t', duplicate_data_sum['y'][i])
    nc_list[duplicate_data_sum['x'][i]-1][duplicate_data_sum['y'][i]-1] = duplicate_data_sum['dat'][i]
print(np.nanmean(nc_list))


# 创建nc文件并写入runoff二维数据
file_nc = "D:/Desktop/runoff160.nc"
nc_pro = nc.Dataset(file_nc, 'w', format='NETCDF4')
# 创建两个地理坐标维度(格点)
e_we = nc_pro.createDimension("e_we", 159)
e_sn = nc_pro.createDimension("e_sn", 159)
# 按维度创建变量
runoff = nc_pro.createVariable("runoff", np.float64, ("e_we", "e_sn"))
# 将二维数组值写入runoff变量
nc_pro.variables['runoff'][:] = nc_list
print(nc_pro)
# 关闭nc文件(否则所创建的nc无法删除)
nc_pro.close()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值