对于df中的每个唯一时间戳,生成dataframe(Python)中所有行的向量
如何为每个时间戳创建包含多个传感器值的向量。此数据子集中所需的输出是将前三行分组,因为它们具有完全相同的时间戳,如: ([21,0,05236],[6,6,0,58],[18,1,0,1770]),然后是下一个时间戳等对于df中的每个唯一时间戳,生成dataframe(Python)中所有行的向量,python,pandas,dataframe,timestamp,Python,Pandas,Dataframe,Timestamp,如何为每个时间戳创建包含多个传感器值的向量。此数据子集中所需的输出是将前三行分组,因为它们具有完全相同的时间戳,如: ([21,0,05236],[6,6,0,58],[18,1,0,1770]),然后是下一个时间戳等 此外,这必须在没有for循环的情况下完成,因为它几乎有一百万行。检查时间戳是否更改,如果更改,则开始收集变量中的行,然后使用as.vector(t(Dataframevariable))对它们进行矢量化。 post可能会帮助您IIUC,您可以对报告时间上的数据帧进行分组,然后对于
此外,这必须在没有for循环的情况下完成,因为它几乎有一百万行。检查时间戳是否更改,如果更改,则开始收集变量中的行,然后使用
as.vector(t(Dataframevariable))
对它们进行矢量化。
post可能会帮助您IIUC,您可以对
报告时间
上的数据帧进行分组
,然后对于与唯一的时间戳
对应的每个组,您可以创建从时间戳
到从列a
,B
获取的所需数组的映射,键入和Meter\u值在dict中
理解:
cols = ['A', 'B', 'Type', 'Meter_Value']
info = {k: g[cols].to_numpy() for k, g in df.groupby('Report_Time')}
要访问与唯一的时间戳相对应的数组,可以使用字典查找:
>>> info[pd.Timestamp('2021-02-04 11:03:34')]
array([[21, 0, 0, '5236'],
[6, 6, 0, '58'],
[18, 1, 0, '1770'],
[21, 0, 0, '5237']], dtype=object)
>>> info[pd.Timestamp('2021-02-04 11:03:35')]
array([[6, 6, 0, '57'],
[19, 2, 0, '1732'],
[21, 0, 0, '5238'],
[18, 1, 0, '1769']], dtype=object)
输出:
[(DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Subsystem', [[0, 0, 0, 0], [0, 0, 0, 0]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'A', [[21, 6, 18, 21], [6, 19, 21, 18]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'B', [[0, 6, 1, 0], [6, 2, 0, 1]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Type', [[0, 0, 0, 0], [0, 0, 0, 0]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Meter_Value', [['5236', '58', '1770', '5237'], ['57', '1732', '5238', '1769']])]
Index(['Report_Time', 'Subsystem', 'A', 'B', 'Type', 'Meter_Value'], dtype='object')
(Timestamp('2021-02-04 11:03:34'), 'Subsystem', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:35'), 'Subsystem', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:34'), 'A', [21, 6, 18, 21])
(Timestamp('2021-02-04 11:03:35'), 'A', [6, 19, 21, 18])
(Timestamp('2021-02-04 11:03:34'), 'B', [0, 6, 1, 0])
(Timestamp('2021-02-04 11:03:35'), 'B', [6, 2, 0, 1])
(Timestamp('2021-02-04 11:03:34'), 'Type', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:35'), 'Type', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:34'), 'Meter_Value', ['5236', '58', '1770', '5237'])
(Timestamp('2021-02-04 11:03:35'), 'Meter_Value', ['57', '1732', '5238', '1769'])
在[]中:
tuples=[]
for my_tuples in results:
(dates,key,data)=my_tuples
for i in range(len(dates)):
print(dates[i],key,data[i])
tuples.append((dates[i],key,data[i]))
for a_tuple in tuples:
print(a_tuple)
输出:
[(DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Subsystem', [[0, 0, 0, 0], [0, 0, 0, 0]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'A', [[21, 6, 18, 21], [6, 19, 21, 18]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'B', [[0, 6, 1, 0], [6, 2, 0, 1]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Type', [[0, 0, 0, 0], [0, 0, 0, 0]]), (DatetimeIndex(['2021-02-04 11:03:34', '2021-02-04 11:03:35'], dtype='datetime64[ns]', name='Report_Time', freq=None), 'Meter_Value', [['5236', '58', '1770', '5237'], ['57', '1732', '5238', '1769']])]
Index(['Report_Time', 'Subsystem', 'A', 'B', 'Type', 'Meter_Value'], dtype='object')
(Timestamp('2021-02-04 11:03:34'), 'Subsystem', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:35'), 'Subsystem', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:34'), 'A', [21, 6, 18, 21])
(Timestamp('2021-02-04 11:03:35'), 'A', [6, 19, 21, 18])
(Timestamp('2021-02-04 11:03:34'), 'B', [0, 6, 1, 0])
(Timestamp('2021-02-04 11:03:35'), 'B', [6, 2, 0, 1])
(Timestamp('2021-02-04 11:03:34'), 'Type', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:35'), 'Type', [0, 0, 0, 0])
(Timestamp('2021-02-04 11:03:34'), 'Meter_Value', ['5236', '58', '1770', '5237'])
(Timestamp('2021-02-04 11:03:35'), 'Meter_Value', ['57', '1732', '5238', '1769'])
打印(df.to_dict())
并粘贴问题中的输出,不要使用图像,因为它们不可复制。请不要发布数据帧的图像,以文本格式提供数据帧,以便人们可以复制和尝试他们的逻辑。我现在已经这样做了,谢谢@Manakin@Manakin你介意我回答这个问题吗:)@ShubhamSharma请说吧!你永远都不需要获得好答案的许可;)非常感谢。这可以按预期工作。基本上,我在每一行上都有一个传感器值,但是对于唯一的时间戳,行的数量并不一致。因此,我有一个想法,删除秒数,查看每分钟记录的所有传感器值/行,并可能对每分钟进行降维。即使每分钟的行数不同,您知道这是否可行吗?您现在可以使用列表理解或其他类型的列表元组过滤来获得所需的数据。