Запись переменной в новую строку DataFrame
Есть переменная (в примере ниже - measurement), значение которой изменяется. Нужно записывать её каждое новое значение в новую строку датафрейма. Код
df = pd.DataFrame({'Measurement': [str(measurement.payload.decode("utf-8"))]})
print(df)
создает датафрейм, но он сохраняет только одну свою строку. С каждой новой переменной единственная строка датафрейма обновляется, а нужно, чтобы каждая новая переменная записывалась в новую строку того же датафрейма.
Ответы (1 шт):
Для первого значения переменной создаем датафрейм так, как вы это уже сделали
(применить функцию 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