加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用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]

也可以在weekday_name之前添加另一个级别的MultiIndex:

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使用to_csv

df.to_csv('try.csv',encoding='utf-8')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读