Pandas 列拆分|天数转日期[通俗易懂]

Pandas 列拆分|天数转日期[通俗易懂]客户要求如下:1.按要求处理p360-met文件,从第5行开始读取:Met=pd.read_csv("P360-met.csv&quo

Pandas 列拆分|天数转日期[通俗易懂]

客户要求如下:

Pandas 列拆分|天数转日期[通俗易懂]

1.按要求处理p360-met文件,从第5行开始读取:

Pandas 列拆分|天数转日期[通俗易懂]

Met=pd.read_csv("P360-met.csv",skiprows=5)# 将 DateTime 列拆分为 date 和 time 列Met = Met.assign(date=Met['DateTime'].str.split("T").str[0], time=Met['DateTime'].str.split("T").str[1])#筛选每日12点Met[Met["time"]=="12:00:00Z"]
Pandas 列拆分|天数转日期[通俗易懂]

2.按要求处理p360 2017 snr文件,文件名格式:p3603650.17.snr66

#遍历所有文件
file_lst=os.listdir("./p360/")
file_lst
 #分割文件名,变为日期和天数
 df_snr.loc[row,"date"]=get_date("20"+file_date[1],file_date[0][4:7],)
#读取文件,按\t分割
Snr=pd.read_csv("./p360/"+file,sep="\t",header=None,)
Pandas 列拆分|天数转日期[通俗易懂]

# 将 a 列拆分为 多列 三列Snr = Snr.join(Snr[0].str.split(expand=True).rename(columns={0:'a', 1:'b', 2:'c',3:"d",4:"e",5:"f",6:"g",7:"h",8:"i"}))#转换G列为float类型Snr["g"]=Snr["g"].astype("float")#使用已知第几天算出是该年日期date = pd.Timestamp(year=int(year), month=1, day=1) + pd.Timedelta(days=int(day_of_year)-1)
df_snr=pd.DataFrame({"date":[]})row=0for file in file_lst:    #print(file)    file_date=file.split(".")    #分割文件名,变为日期和天数    df_snr.loc[row,"date"]=get_date("20"+file_date[1],file_date[0][4:7],)    #读取文件,按\t分割    Snr=pd.read_csv("./p360/"+file,sep="\t",header=None,)    # 将 a 列拆分为 多列 三列    Snr = Snr.join(Snr[0].str.split(expand=True).rename(columns={0:'a', 1:'b', 2:'c',3:"d",4:"e",5:"f",6:"g",7:"h",8:"i"}))    #转换G列为float类型    Snr["g"]=Snr["g"].astype("float")    #计算均值,大小值写入DF    df_snr.loc[row,"max"]=Snr["g"].max()    df_snr.loc[row,"min"]=Snr["g"].min()    df_snr.loc[row,"mean"]=Snr["g"].mean()    row+=1

3.合并表格,先将V1表与Met表合并,使用pd.merge,DateTime列 left合并

#读取V1表
V1=pd.read_csv("p360_v1.csv",skiprows=5,)
V1.reset_index(inplace=True)
V1["DateTime"]=V1["index"]
# #合并V1和Met表
V1_join=pd.merge(V1,Met[['DateTime', ' Air Pressure', ' Air Temperature', ' Relative Humidity',
   ' Wind Direction', ' Wind Speed', ' Rain', ' Hail', ' Samples/hour',]],
             on=["DateTime"],how="left"
             )
V1_join
# 将日期列转换为字符串格式
df_snr['DateTime'] = pd.to_datetime(df_snr['date']).dt.strftime('%Y-%m-%dT12:00:00Z')
df_snr

最后将3个表合并,使用pd.merge,DateTime列 left合并

result=pd.merge(V1_join,df_snr[["DateTime","max","min","mean"]],on="DateTime",how="left")
result
Pandas 列拆分|天数转日期[通俗易懂]

最后一列加上日期是本年的第几天

def get_tian(tian):
        # 创建一个日期
    date = pd.to_datetime(tian)

    # 提取日期所在的年份
    year = date.year

    # 创建一个新日期,表示当年的第一天
    first_day_of_year = pd.to_datetime(f'{year}-01-01')

    # 计算日期和当年的第一天之间的天数,并加上1
    day_of_year = (date - first_day_of_year).days + 1

    return day_of_year # 输出结果为 

 #拆分日期
result1=result.assign(date=result['DateTime'].str.split("T").str[0], time=result['DateTime'].str.split("T").str[1])
for i in range(len(result1)):
    result1.loc[i,"tian"]=get_tian(result1.loc[i,"date"])
result1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11828.html

(0)

相关推荐

  • 使用Python的string.find方法查找子字符串位置

    使用Python的string.find方法查找子字符串位置Python中的string类型提供了find方法,该方法可以用于查找一个字符串中是否包含指定的子字符串。该方法返回的是找到子字符串的索引值,如果找不到则返回-1。该方法的语法如下:

    2024-01-22
    93
  • mysql问题大全_MySQL常见面试题

    mysql问题大全_MySQL常见面试题1、select count(*) exists…,如果exists中的子查询返回为空,在不同表有时返回1,有时返回0. select count(1) from dual where exis…

    2023-02-03
    124
  • mysql5.7.32解压版安装_mysql5.7安装教程

    mysql5.7.32解压版安装_mysql5.7安装教程下载 mysql 的 解压版安装文件mysql-5.7.25-winx64.zip D:mysqlmaster D:mysqlsalve 分别新建 data 和 binlog 目录,以及配置文件 m…

    2023-02-12
    146
  • MySQL数据库(三)简介[通俗易懂]

    MySQL数据库(三)简介[通俗易懂]前提要述:参考书籍《MySQL必知必会》 2.1 MySQL简介 2.1.1 什么是MySQL MySQL是一种关系数据库管理系统。负责数据库中数据的存储,检索,管理和处理。 2.1.2 MySQL的

    2023-01-22
    150
  • Python异常抛出

    Python异常抛出Python是一种高级语言,在编写代码时会存在各种潜在的错误,例如语法错误、拼写错误、逻辑错误等。在程序运行过程中也会存在各种异常情况,如文件读写异常、网络连接异常等。为了使程序能够更好地处理这些异常情况,Python提供了异常处理机制,允许开发者对异常进行捕获和处理。

    2024-09-12
    27
  • 使用Python和Tkinter创建动态GUI界面

    使用Python和Tkinter创建动态GUI界面Python是一门高级编程语言,主要用于面向对象、函数式和结构式编程。它已经成为了广泛使用的编程语言之一,被用于Web开发、数据分析、人工智能、机器学习等领域。Tkinter是Python的标准GUI库,包含了许多用于创建图形用户界面的工具和控件。在本文中,将介绍使用Python和Tkinter创建动态GUI界面的方法。

    2024-04-09
    70
  • mysql触发器trigger 实例详解「建议收藏」

    mysql触发器trigger 实例详解「建议收藏」 https://www.cnblogs.com/phpper/p/7587031.html MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概…

    2023-03-23
    136
  • mysql 分片_轻量级数据库

    mysql 分片_轻量级数据库1. 初识shardingJdbc 2. sharding-jdbc四种配置方式 3. YAML配置方式及mysql环境准备 4. sharding-jdbc分库分表实例测试 5. 轻量的shard…

    2023-04-05
    163

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注