作为查询集列的外键

2024-09-28 03:13:15 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有3个类,一个组类,一个传感器类和一个值类。 这些类大致定义如下:

class SensorGroup(models.Model):
    name = models.CharField(max_length=100)
    logging_on = models.BooleanField(default=False)

class Sensor(models.Model):
    device_id = models.CharField(max_length=25, primary_key=True)
    name = models.CharField(max_length=25, blank=False)
    last_updated = models.DateTimeField(auto_now=True)
    sensor_group = models.ForeignKey(SensorGroup, related_name='sensors')

class Value(models.Model):
   sensor = models.ForeignKey(Sensor, related_name='values')
   time = models.DateTimeField(auto_now_add=True)
   value = models.FloatField(blank=False)

每隔20秒为每个传感器添加值。 我想使用pandas.DataFrame.from_records()将它转换成这样的表,例如对于组1:

| sensor_1 | sensor_2 | sensor_3 |    timestamp |
|----------+----------+----------+--------------|
|      1.5 |      2.0 |      1.0 | 12:33 2/4/17 |
|----------+----------+----------+--------------|
|      2.0 |      1.5 |      3.3 | 12:34 2/4/17 |
....

到目前为止我试过的:

qs = Sensors.all().values('name', 'values__value')
df = pd.DataFrame.from_records(list(qs))
print(df)

收益率

               name  values__value
0          sensor_1            0.0
1          sensor_1            1.0
2          sensor_1            2.0
3          sensor_2            0.0
4          sensor_2            1.0
5          sensor_2            2.0

有没有办法进行此查询并将其转换为数据集?你知道吗


Tags: namefalsetruemodelvaluemodels传感器sensor
1条回答
网友
1楼 · 发布于 2024-09-28 03:13:15

看看pandaspivot_table,如果在queryset中也提取时间戳,那么可以执行以下操作:

table = pd.pivot_table(df, values='values__value', index=['timestamp'], columns=['name']).reset_index()

生成表格

相关问题 更多 >

    热门问题