Создание пустого фрейма данных или списка с именами столбцов, а затем добавление данных по именам столбцов - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь изучить Python 2.7 путем преобразования кода, написанного на VB, в python.У меня есть имена столбцов, и я пытаюсь создать пустой фрейм данных или список, а затем добавить строки путем итерации (см. Ниже).Я не знаю общее количество строк, которые мне нужно будет добавить заранее.Я могу создать фрейм данных с именами столбцов, но не могу понять, как добавить данные.Я посмотрел на несколько вопросов, подобных моему, но строка / столбцы данных заранее неизвестны.

фрагмент кода:

cnames=['Security','Time','Vol_21D','Vol2_21D','MaxAPV_21D','MinAPV_21D' ]
df_Calcs = pd.DataFrame(index=range(10), columns=cnames)

это создает пустой df (df_Calcs) ...тогда код ниже, где я получаю данные для заполнения строк ... Я использую n в качестве счетчика для новой строки # для вставки (есть 20 других столбцов, которые я добавляю в строку), но ниже следует объяснить, чтоЯ пытаюсь это сделать.

i = 0
n = 0
while True:
        df_Calcs.Security[n] = i + 1
        df_Calcs.Time[n] = '09:30:00'
        df_Calcs.Vol_21D[n] = i + 2
        df_Calcs.Vol2_21D[n] = i + 3
        df_Calcs.MaxAPV_21D[n] = i + 4
        df_Calcs.MinAPV_21D[n] = i + 5
        i = i +1
        n = n +1
        if i > 4:
           break

print df_Calcs Если мне нужно использовать список или массив, пожалуйста, дайте мне знать, я пытаюсь сделать это самым быстрым и эффективным способом.Затем эти данные будут отправлены в таблицу базы данных MySQL.

Результат ...

  Security      Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0        1  09:30:00       2        3          4          5
1        2  09:30:00       3        4          5          6
2        3  09:30:00       4        5          6          7
3        4  09:30:00       5        6          7          8
4        5  09:30:00       6        7          8          9
5      NaN       NaN     NaN      NaN        NaN        NaN
6      NaN       NaN     NaN      NaN        NaN        NaN
7      NaN       NaN     NaN      NaN        NaN        NaN
8      NaN       NaN     NaN      NaN        NaN        NaN
9      NaN       NaN     NaN      NaN        NaN        NaN

1 Ответ

0 голосов
/ 24 сентября 2018

У вас есть много способов сделать это.

Создать пустой фрейм данных:

cnames=['Security', 'Time', 'Vol_21D', 'Vol2_21D', 'MaxAPV_21D', 'MinAPV_21D']
df = pd.DataFrame(columns=cnames)

Вывод:

Empty DataFrame
Columns: [Security, Time, Vol_21D, Vol2_21D, MaxAPV_21D, MinAPV_21D]
Index: []

Затем в цикле вы можете создать pd.series и добавить к вашему фрейму данных, например:

df.append(pd.Series([1, 2, 3, 4, 5, 6], cnames), ignore_index=True)

Или вы можете добавить dict:

df.append({'Security': 1,
           'Time': 2,
           'Vol_21D': 3,
           'Vol2_21D': 4,
           'MaxAPV_21D': 5,
           'MinAPV_21D': 6
          }, ignore_index=True)

Это будет тот же вывод:

  Security Time Vol_21D Vol2_21D MaxAPV_21D MinAPV_21D
0        1    2       3        4          5          6

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

data = []
for i in range(0,5):
    data.append([1,2,3,4,i,6])
df = pd.DataFrame(data, columns=cnames)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...