#python-3.x #pandas #list #function
#python-3.x #pandas #Список #функция
Вопрос:
Я пытаюсь создать таблицу из списка данных, используя pandas.
Первоначально я хотел создать функцию, в которой я мог бы передавать динамические переменные, чтобы я мог постоянно добавлять новые строки из списка данных.
Это работает до тех пор, пока не начнется добавление строк. Заголовки столбцов добавляются, но данные — нет. Он либо сохраняет значение только в последнем столбце, либо ничего не добавляет.
Мой scrath был:
for title in titles:
for x in data:
table = {
title: data[x]
}
df.DataFrame(table, columns=titles, index[0]
список столбцов:
titles = ['timestamp', 'source', 'tracepoint']
список данных:
data = ['first', 'second', 'third',
'first', 'second', 'third',
'first', 'second', 'third']
Как я могу сделать что-то подобное?
timestamp, source, tracepoint
first, second, third
first, second, third
first, second, third
Комментарии:
1. Вместо цикла я предлагаю вам использовать numpy и изменять данные с помощью функции reshape . Тогда вам не понадобится цикл, вы просто поместите сформированный массив и сможете поместить его в pd.DataFrame со столбцами
2.
pd.DataFrame([data[i:i 3] for i in range(0,len(data), 3)], columns=titles)
?
Ответ №1:
Если вы просто хотите инициализировать фрейм данных pandas, вы можете использовать конструктор dataframe. И вы также можете добавить строку с помощью dict . Pandas предоставляет другие полезные функции, такие как объединение между фреймами данных, вставка / удаление столбцов. Если вам нужно, пожалуйста, проверьте документ pandas.
import pandas as pd
# initialization by dataframe’s constructor
titles = ['timestamp', 'source', 'tracepoint']
data = [['first', 'second', 'third'],
['first', 'second', 'third'],
['first', 'second', 'third']]
df = pd.DataFrame(data, columns=titles)
print('---initialization---')
print(df)
# append row
new_row = {
'timestamp': '2020/11/01',
'source': 'xxx',
'tracepoint': 'yyy'
}
df = df.append(new_row, ignore_index=True)
print('---append result---')
print(df)
вывод
---initialization---
timestamp source tracepoint
0 first second third
1 first second third
2 first second third
---append result---
timestamp source tracepoint
0 first second third
1 first second third
2 first second third
3 2020/11/01 xxx yyy