добавление списка в строку данных - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть список с некоторыми счетами с 5 элементами.

counts = [33, 35, 17, 38, 29]

Этот счетный список обновляется новыми номерами каждый день.Поэтому я хотел создать фрейм данных и добавлять данные подсчета в виде новой строки каждый день.Каждый элемент списка должен отображаться в отдельном столбце в кадре данных.Что я хочу сделать, это следующее:

df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
df = df.append(counts)

, но вместо добавления подсчитывает данные в виде строки, он добавляет новый столбец.Любая помощь о том, как сделать это правильно?

Предположим, что подсчет в день 0 равен [33, 35, 17, 38, 29], а в день 1 равен [30, 36, 20, 34, 32], в качестве вывода мне нужно следующее:

      w1 w2 w3 w4 w5
    0 33 35 17 38 29
    1 30 36 20 34 32

где индекс представляет день, в который были проведены подсчеты.любая помощь?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Если вы знаете day0 и day1 в начале, то вы хотите построить это так, как предлагает Джезраэль.

Но Я предполагаючто вы хотите иметь возможность добавить новую строку в цикл.

Решение с loc

При использовании loc вам нужно использовать значение индекса, которое еще не существует,В этом случае я предполагаю, что мы поддерживаем общий RangeIndex.Если это так, я предполагаю, что следующий индекс равен длине текущего DataFrame.

df.loc[len(df), :] = counts
df

   w1  w2  w3  w4  w5
0  33  35  17  38  29

Давайте сделаем цикл.

day0 = [33, 35, 17, 38, 29]
day1 = [30, 36, 20, 34, 32]

for counts in [day0, day1]:
  df.loc[len(df), :] = counts

df

     w1    w2    w3    w4    w5
0  33.0  35.0  17.0  38.0  29.0
1  30.0  36.0  20.0  34.0  32.0
0 голосов
/ 27 ноября 2018

Присоединение к DataFrame возможно, но поскольку медленнее, если много строк, лучше создать список списков и создать DataFrame с помощью конструктора:

counts = [33, 35, 17, 38, 29]
counts1 = [37, 8, 1, 2, 0]

L = [counts, counts1]
df = pd.DataFrame(L, columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
print (df)

   w1  w2  w3  w4  w5
0  33  35  17  38  29
1  37   8   1   2   0

Но если это необходимо, например, добавление только одной строки в день, затем необходимо создать Series с такими же значениями индекса, как columns:

df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])

counts = [33, 35, 17, 38, 29]

s = pd.Series(counts, index=df.columns)
df = df.append(s, ignore_index=True)
print (df)
   w1  w2  w3  w4  w5
0  33  35  17  38  29
...