- html - 我的下拉菜单的内容关闭得太快
- c# - 使用 Html Agility Pack 从网页中的表中获取值而不使用 "SelectNode'
- html - 内容容器下的 CSS 下拉菜单
- html - 如何停止嵌套列表重叠父列表?
我有几个数据系列,其中每个数据点都使用时间戳保存,精度为 [ms]。我想将这些系列合并到一个时间线上,所有时间戳都应该以 [s] 的精度进行采样,最后应该有一个 pd,其中第一列是日期时间,其中包含该系列中所有不同的时间戳。其他列在该日期时间合并。
我的代码可以工作,但由于内存的原因在处理大数据时失败。
数据如下所示:
a_data; a_Timestamp; b_data; b_Timestamp; c_data ; c_Timestamp
1; 2019-07-24 12:00:00.123; 2 ; 2019-07-24 12:00:00.234; 3 ; 2019-07-24 12:00:00.345;
2; 2019-07-24 12:00:03.123; 3 ; 2019-07-24 12:00:02.234; 4 ; 2019-07-24 12:00:03.645;
我的代码如下:
import numpy as np
import pandas as pd
import datetime as dt
def prepareData(df):
dfm = None
df = df.dropna(axis='columns',how='all')
df = df.sort_index()
for col in df:
dt = None
if not "Timestamp" in col:
series = pd.DataFrame({'DateTime' : pd.to_datetime(df[col + '_Timestamp']).astype('datetime64[s]'),col : df[col]})
if mergedFrame is not None:
dfm = dfm.merge(series, on='DateTime', how ='outer').sort_values('DateTime')
else:
dfm = series
dfm = dfm.loc[~dfm.DateTime.duplicated(keep='first')]
dfm = dfm.sort_index()
dfm = dfm.fillna(method='ffill')
dfm = dfm.fillna(method='bfill')
dfm = dfm.fillna(0)
return dfm.reset_index()
df = pd.read_csv('file.csv', sep = ";", na_values="n/a" ,low_memory=False)
prepareData(df).to_csv( 'file_sampled.csv', sep = ';')
结果应该是
DateTime; a_data; b_data ; c_data
2019-07-24 12:00:00; 1;2;3
2019-07-24 12:00:02; 1;3;3
2019-07-24 12:00:03; 2;3;3
2019-07-24 12:00:04; 2;3;4
我得到了这个结果,但它占用的内存对于我的电脑来说太多了。我想有更好的方法来做到这一点。
最佳答案
首先,我们选择每个数据和每个时间戳列并将它们并排放置:
x = pd.concat([pd.melt(df.iloc[:,::2], value_name='data'), pd.melt(df.iloc[:,1::2], value_name='DateTime').iloc[:,-1]], axis=1)
将日期时间字符串转换为 DateTime,四舍五入为整秒并设置为索引:
x['DateTime'] = pd.to_datetime(x.DateTime).dt.round('s')
x = x.set_index('DateTime')
最后我们对数据进行透视:
x.pivot(columns='variable', values='data')
结果:
variable a_data b_data c_data
DateTime
2019-07-24 12:00:00 1.0 2.0 3.0
2019-07-24 12:00:02 NaN 3.0 NaN
2019-07-24 12:00:03 2.0 NaN NaN
2019-07-24 12:00:04 NaN NaN 4.0
关于python-3.x - 有没有一种Pythonic方法将日期时间上的数据帧与具有不规则日期时间戳的数据对合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182282/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!