gpt4 book ai didi

python - 使用 python 将 csv 中的值插入到日期和小时相等的另一个 csv

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:59 25 4
gpt4 key购买 nike

所以,我的程序中有这个问题。我有一个包含此数据的 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

我想做的是通过使用 DATE 将 CSV: 2 的 DATA 列的值放入 CSV: 1 >小时来匹配它。

示例输出:

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 添加 0 to列名然后reindex_axis 1 - :

L=['0000','0100','0200','0300','0400','0500','0600'
,'0700','0800','0900','1000','1100','1200','1300'
,'1400','1500','1600','1700','1800','1900','2000'
,'2100','2200','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')

关于python - 使用 python 将 csv 中的值插入到日期和小时相等的另一个 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42689159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com