用python预处理提取干旱特征的数据

针对批量提取干旱特征,目前只找到matlab的代码,代码要求的数据格式跟我的数据格式不太相同,所以我选择用比较熟悉的python进行预处理。由于我是新手,所以代码可能有点复杂,但是很容易看懂。

原始数据中,时间这列格式为1980/3/1,目标格式将时间拆分为一列是年,一列是月

import pandas as pd
import os

f = 568
while f < 13611:
    point_df = pd.DataFrame()
    data_path = 'G:/Python_/ghtz/sewdi_1'
    out_path = 'G:/Python_/ghtz/data/'

f是文件名,需要对文件夹下的f.csv文件进行循环,因此每次循环都要新的dataframe表格,所以空表写在循环里面。

 if os.path.exists(data_path + "/" + str(f) + ".csv"):
        data = pd.read_csv(data_path + "/" + str(f) + ".csv")

这一步是判断文件名是否存在,如果存在则读取为data

        i = 1980
        k = 0
        while i < 2018:
            j = 3
            while j < 10:
                for index, row in data.iterrows():
                    point_df.loc[k, 'year'] = i
                    point_df.loc[k, 'month'] = j
                    point_df.loc[k, 'index'] = data.loc[k, 'EWD_calculated_index']
                k += 1
                j += 1
            i += 1
    print(str(f)+"!!!")

这里正式对时间进行循环,注意初始年月的书写位置,每次对新一年的循环,都要初始月份,不然就会判断上一次的月份,而不在范围内,导致无法进入循环。这里我的数据月份范围为3-9月,所以从3开始,到10结束.。

以上代码在写入年月的时候发现输出为1980.0、1981.0以及3.0、4.0,针对这种情况,我对代码进行以下修改

        i = 1980
        k = 0
        while i < 2018:
            j = 3
            while j < 10:
                for index, row in data.iterrows():
                    point_df.loc[k, 'year'] = '%i' % (i)
                    point_df.loc[k, 'month'] = '%i' % (j)
                    point_df.loc[k, 'index'] = data.loc[k, 'EWD_calculated_index']
                k += 1
                j += 1
            i += 1
    print(str(f)+"!!!")

符号’%i'可以对i和j进行取整,这样就可以输出正确的年月啦

    point_df.to_csv(out_path+str(f)+'.csv')
    f+=1

输出这个点的数据,并进行下一个文件的数据处理

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值