我有一个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
列的labels_df
列中。
我的问题是这个self.dataset['Label'] = labels_df['Label']
抛出这个错误:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
两个数据集的长度始终相同。
只有在使用RabbitMQ时才会出现上述错误。例如,如果a有一个csv
文件并将其存储到数据框中然后创建这个额外的列,那么一切都没有问题。
我刚刚找到了解决问题的方法。事实证明,我所要做的就是在一个名为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
如果有人找到更好的解决方案,请帮忙!