我有一个RabbitMQ,我会定期接收一些数据,如下所示(每3英寸一行):
CPU, Memory, Disk
22, 30, 31
25, 33, 29
28, 33, 27
25, 32, 30
33, 32, 25
我有一个名为dataset
的数据框,它具有三列;分别是CPU
,Memory
和Disk
,用于存储从RabbitMQ接收的数据。
将数据存储到数据帧后,将调用scikit-learn
算法(DBSCAN
)并创建数据簇。 DBSCAN
将每个数据的簇存储在名为labels_
的数组中。然后,将labels_
存储到名为labels_df
的列中名为'Label'
的新数据框中。
我想要的是在'Label'
数据框中创建一个名为dataset
的新列,并将数据存储在{的Label
列的Label
列中{1}}数据框。
我的问题是此labels_df
引发此错误:
self.dataset['Label'] = labels_df['Label']
两个数据集的长度始终相同。
仅当我使用RabbitMQ时,才会出现上述错误。例如,如果一个具有ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
文件,并且我将其存储在数据框中,然后创建此额外的列,则一切工作都不会出现问题。
答案 0 :(得分:0)
我刚刚发现问题的根源。事实证明,我要做的就是在一个名为labels
的新数据帧中传递self.labels
并将其与self.dataset
数据帧连接。这是最终发生的事情:
self.dataset:
CPU Memory Disk
0 33 67 64
1 28 47 67
2 9 23 23
3 10 18 18
4 48 56 62
5 39 60 62
self.labels
Labels
0 -1
1 -1
2 -1
3 -1
4 0
5 -1
,最后一个数据帧就是这个:
self.final_dataframe
CPU Memory Disk Labels
0 33 67 64 -1
1 28 47 67 -1
2 9 23 23 -1
3 10 18 18 -1
4 48 56 62 0
5 39 60 62 -1
如果有人找到更好的解决方案,请提供帮助!