gpt4 book ai didi

python - perision减少后按日期合并数据框

转载 作者:行者123 更新时间:2023-11-28 17:15:19 24 4
gpt4 key购买 nike

谢谢你看这个......

需要降低物联网传感器数据时间戳和合并的精度。

我有两个包含以下数据的 csv 文件

CSV-1

datetime,temperature
2017-06-13 22:20:11.309,82.4
2017-06-13 22:19:54.004,82.4
2017-06-13 22:19:36.661,82.4
2017-06-13 22:19:19.359,82.4

CSV-2

datetime,humidity
2017-06-13 22:07:30.723,63.0
2017-06-13 22:07:13.448,63.0
2017-06-13 22:06:56.115,63.0
2017-06-13 22:06:38.806,63.0

请注意,日期时间条目精确到毫秒。我正在使用以下代码将精度降低到秒。

ugt = pd.read_csv('ugt.csv', parse_dates=True, index_col=0)
ugh = pd.read_csv('ugh.csv', parse_dates=True, index_col=0)

ugt.index = ugt.index.map(lambda x: x.replace(microsecond=0))
ugh.index = ugh.index.map(lambda x: x.replace(microsecond=0))

产生以下数据帧:

                     temperature
datetime
2017-06-13 22:06:57 82.4 <---
2017-06-13 22:06:37 82.4
2017-06-13 22:06:20 82.4
2017-06-13 22:06:03 82.0 <---

humidity
datetime
2017-06-13 22:06:57 63.0 <---
2017-06-13 22:06:38 63.0
2017-06-13 22:06:21 63.0
2017-06-13 22:06:03 63.0 <---

请注意,一些时间戳与秒匹配(参见 <---),其他则不匹配。这是由于各种传感器执行读数的能力受到限制。没有始终如一的频率。

然后我们创建一个主数据框,在我们从所有传感器收集数据的时间段内,每天每一秒都填充行。

                     temperature  humidity
2017-04-25 12:00:00 0 0
2017-04-25 12:00:01 0 0
2017-04-25 12:00:02 0 0
2017-04-25 12:00:03 0 0
2017-04-25 12:00:04 0 0

我们不知道如何使用 pandas 根据日期时间将两个 csv 文件连接、合并、追加到主数据框中。我们想要的是:

                     temperature  humidity
2017-04-25 12:00:00 0 0
2017-04-25 12:00:01 82.0 0
2017-04-25 12:00:02 0 44.0
2017-04-25 12:00:03 0 0
2017-04-25 12:00:04 82.0 44.0
2017-04-25 12:00:05 0 0
2017-04-25 12:00:06 82.0 0
2017-04-25 12:00:07 0 0
2017-04-25 12:00:08 82.0 44.0

我们将在未来添加额外的传感器......光,二氧化碳,所以几乎每一秒最终都会有一个包含数据的列。

我们还想对各种传感器收集数据的频率及其准确性进行一些分析,因此要使用主数据框。

你们都摇滚!感谢您的帮助。

最佳答案

temp(温度)数据框:

                 datetime  temperature
0 2017-06-13 22:20:11.309 82.4
1 2017-06-13 22:19:54.004 82.4
2 2017-06-13 22:19:36.661 82.4
3 2017-06-13 22:19:19.359 82.4

潮湿数据框:

                 datetime  humidity
0 2017-06-13 22:07:30.723 63.0
1 2017-06-13 22:07:13.448 63.0
2 2017-06-13 22:06:56.115 63.0
3 2017-06-13 22:06:38.806 63.0



temp.datetime = pd.to_datetime(temp.datetime) #convert to datetime dtype
temp.set_index('datetime', inplace=True) #make it the index
temp.index = temp.index.round('S') #and now round to the second

现在临时数据框看起来像:

                     temperature
datetime
2017-06-13 22:20:11 82.4
2017-06-13 22:19:54 82.4
2017-06-13 22:19:37 82.4
2017-06-13 22:19:19 82.4

对潮湿的 df 做同样的事情:

humid.datetime = pd.to_datetime(humid.datetime) 
humi.set_index('datetime', inplace=True)
humid.index = humid.index.round('S')

现在潮湿是:

                     humidity
datetime
2017-06-13 22:07:31 63.0
2017-06-13 22:07:13 63.0
2017-06-13 22:06:56 63.0
2017-06-13 22:06:39 63.0

重建临时索引,根据需要替换日期:

temp = temp.reindex(pd.DatetimeIndex(start='2017-06-13 22:00', end='2017-06-13 22:20', freq='S'))
temp.head()

temperature
2017-06-13 22:00:00 NaN
2017-06-13 22:00:01 NaN
2017-06-13 22:00:02 NaN
2017-06-13 22:00:03 NaN
2017-06-13 22:00:04 NaN

现在左加入:

out = pd.merge(temp, humid, left_index=True, right_index=True, how='left')

out.head():
temperature humidity
2017-06-13 22:00:00 NaN NaN
2017-06-13 22:00:01 NaN NaN
2017-06-13 22:00:02 NaN NaN
2017-06-13 22:00:03 NaN NaN
2017-06-13 22:00:04 NaN NaN

确保这确实有效:

out.loc['2017-06-13 22:07:31']
temperature humidity
2017-06-13 22:07:31 NaN 63.0

万岁!

关于python - perision减少后按日期合并数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44568806/

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