Запись переменной в новую строку DataFrame

Есть переменная (в примере ниже - measurement), значение которой изменяется. Нужно записывать её каждое новое значение в новую строку датафрейма. Код

df = pd.DataFrame({'Measurement': [str(measurement.payload.decode("utf-8"))]})
print(df)

создает датафрейм, но он сохраняет только одну свою строку. С каждой новой переменной единственная строка датафрейма обновляется, а нужно, чтобы каждая новая переменная записывалась в новую строку того же датафрейма.


Ответы (1 шт):

Автор решения: MarianD

Для первого значения переменной создаем датафрейм так, как вы это уже сделали

(применить функцию str() на строку не нужно; может быть вы хотели применить функцию float()):

df = pd.DataFrame({'Measurement': [measurement.payload.decode("utf-8")]})

Затем для каждого следующего (нового) значение используем то же самое, что и на правой стороне, т.е.

     pd.DataFrame({'Measurement': [measurement.payload.decode("utf-8")]})

но добавим его к текущему датафрейму df применением функции pd.concat()

df = pd.concat((df, 
                pd.DataFrame({'Measurement': [measurement.payload.decode("utf-8")]})),
                ignore_index=True) 

Пример с конкретными значениами вместо вашего measurement.payload.decode("utf-8"):

>>> df = pd.DataFrame({'Measurement': [7.62]})
>>> df
   Measurement
0         7.62
>>> df = pd.concat((df,
...                 pd.DataFrame({'Measurement': [3.14]})),
...                 ignore_index=True)
>>> df
   Measurement
0         7.62
1         3.14
>>> df = pd.concat((df,
...                 pd.DataFrame({'Measurement': [2.72]})),
...                 ignore_index=True)
>>> df
   Measurement
0         7.62
1         3.14
2         2.72
→ Ссылка