所以我有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
有没有办法进行此查询并将其转换为数据集?
答案 0 :(得分:0)
看一下pandas pivot_table,如果你在查询集中提取时间戳,你可以这样做:
table = pd.pivot_table(df, values='values__value', index=['timestamp'], columns=['name']).reset_index()
生成表