使用python将csv中的值插入另一个在日期和小时内相等的csv
发布时间:2020-12-20 13:16:31 所属栏目:Python 来源:网络整理
导读:所以,我的程序中有这个问题.我有一个包含此数据的csv文件: CSV: 1 - -- 0 100 200 300 06/02/2017 Mon 07/02/2017 Tue 08/02/2017 Wed 和其他csv文件包含: CSV: 2 Date Hour Data 07/02/2017 200 0.1 06/02/2017 100 2.1 08/02/2017 300 4.1 我要做的是将C
所以,我的程序中有这个问题.我有一个包含此数据的csv文件:
CSV: 1 - -- 0 100 200 300 06/02/2017 Mon 07/02/2017 Tue 08/02/2017 Wed 和其他csv文件包含: CSV: 2 Date Hour Data 07/02/2017 200 0.1 06/02/2017 100 2.1 08/02/2017 300 4.1 我要做的是将CSV:2的DATA列的值放到CSV:1,使用DATE和Hour来匹配它. 示例输出: CSV: Output - -- 0 100 200 300 06/02/2017 Mon 2.1 07/02/2017 Tue 0.1 08/02/2017 Wed 4.1 这是我的Csv代码:1 import pandas as pd df1 = pd.read_csv('sample.csv') date_df1 = df1["Date"] day_df1 = df1["Day"] df2 = pd.DataFrame(columns=['-','--','0000','0100','0200','0300','0400','0500','0600','0700','0800','0900','1000','1100','1200','1300','1400','1500','1600','1700','1800','1900','2000','2100','2200','2300']) df2["-"] = (date_df1.values) df2["--"] = (day_df1.values) df2 = df2.drop_duplicates(['-'],keep='first') df2 = df2.drop_duplicates(['--'],keep='last') df2.to_csv('try.csv',header=True,index=False,encoding='utf-8') 但我无法弄清楚如何插入数据. 解决方法
我想你可以使用
pivot ,按
zfill tocolumn名称加0,然后
reindex_axis 1 – 列:
L=['0000','2300'] df.Date = pd.to_datetime(df.Date,dayfirst=True) df = df.pivot(index='Date',columns='Hour',values='Data') df.columns = df.columns.astype(str).str.zfill(4) df = df.reindex_axis(L,axis=1) print (df) Hour 0000 0100 0200 0300 0400 0500 0600 0700 0800 0900 ... Date ... 2017-02-06 NaN 2.1 NaN NaN NaN NaN NaN NaN NaN NaN ... 2017-02-07 NaN NaN 0.1 NaN NaN NaN NaN NaN NaN NaN ... 2017-02-08 NaN NaN NaN 4.1 NaN NaN NaN NaN NaN NaN ... Hour 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 Date 2017-02-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2017-02-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2017-02-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN [3 rows x 24 columns] 也可以在 df.index = [df.index,df.index.weekday_name] df.index.names = ['Date','Days'] print (df) Hour 0000 0100 0200 0300 0400 0500 0600 0700 0800 Date Days 2017-02-06 Monday NaN 2.1 NaN NaN NaN NaN NaN NaN NaN 2017-02-07 Tuesday NaN NaN 0.1 NaN NaN NaN NaN NaN NaN 2017-02-08 Wednesday NaN NaN NaN 4.1 NaN NaN NaN NaN NaN Hour 0900 ... 1400 1500 1600 1700 1800 1900 2000 Date Days ... 2017-02-06 Monday NaN ... NaN NaN NaN NaN NaN NaN NaN 2017-02-07 Tuesday NaN ... NaN NaN NaN NaN NaN NaN NaN 2017-02-08 Wednesday NaN ... NaN NaN NaN NaN NaN NaN NaN Hour 2100 2200 2300 Date Days 2017-02-06 Monday NaN NaN NaN 2017-02-07 Tuesday NaN NaN NaN 2017-02-08 Wednesday NaN NaN NaN [3 rows x 24 columns] 写入csv使用 df.to_csv('try.csv',encoding='utf-8') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |