Создайте большой фрейм данных, используя Pandas - PullRequest
1 голос
/ 21 февраля 2020
df = pd.DataFrame([{'Instrument':'AAA', 'Date':'2012-04-18', 'Time_Bucket':180},
                    {'Instrument':'AAA', 'Date':'2012-04-18', 'Time_Bucket':100},
                    {'Instrument':'AAA', 'Date':'2012-04-18', 'Time_Bucket':67},
                    {'Instrument':'AAA', 'Date':'2012-04-18', 'Time_Bucket':33},
                    {'Instrument':'AAA', 'Date':'2012-04-18', 'Time_Bucket':1},
                    {'Instrument':'AAA', 'Date':'2012-04-19', 'Time_Bucket':175},
                    {'Instrument':'AAA', 'Date':'2012-04-19', 'Time_Bucket':110},
                    {'Instrument':'AAA', 'Date':'2012-04-19', 'Time_Bucket':30},
                    {'Instrument':'AAA', 'Date':'2012-04-19', 'Time_Bucket':1},
                    {'Instrument':'BBB', 'Date':'2012-04-18', 'Time_Bucket':180},
                    {'Instrument':'BBB', 'Date':'2012-04-18', 'Time_Bucket':150},
                    {'Instrument':'BBB', 'Date':'2012-04-18', 'Time_Bucket':10}])

У меня есть вышеуказанный DataFrame. Моя цель - создать большой фрейм данных, содержащий все инструменты для разных дат с интервалом времени от 180 до 1. Значение, если у меня есть 100 инструментов для дат 2012-04-18, 2012-04-19, 2012-05- 17, 2012-05-18, 2012-08-15, 2012-08-16, затем мне нужно будет создать общее количество строк 100 * 6 * 180, причем каждая ячейка будет помечена в порядке возрастания даты, но в порядке убывания Time_Bucket. Затем я объединю свой существующий DataFrame с этим недавно созданным Dataframe и заполню его для некоторого анализа данных. Я могу только написать следующее, но это не работает:

df = pd.DataFrame({ 'Instrument' : 'AAA', 'BBB', 'CCC'}, 
                   {'Date': '2012-04-18', '2012-04-19', '2012-05-17', '2012-05-18', '2012-08-15', '2012-08-16'}, 
                   {'Time_Bucket': range(180, N-1 ,1))

Не могли бы вы помочь? Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2020

Используйте itertools.product и передайте в DataFrame конструктор:

i = ['AAA', 'BBB', 'CCC']
d = ['2012-04-18', '2012-04-19', '2012-05-17', '2012-05-18', '2012-08-15', '2012-08-16']
r = range(180, 0 , -1)

from  itertools import product
df = pd.DataFrame(list(product(i, d, r)), columns=['Instrument','Date','Time_Bucket'])
print (df)
     Instrument        Date  Time_Bucket
0           AAA  2012-04-18          180
1           AAA  2012-04-18          179
2           AAA  2012-04-18          178
3           AAA  2012-04-18          177
4           AAA  2012-04-18          176
        ...         ...          ...
3235        CCC  2012-08-16            5
3236        CCC  2012-08-16            4
3237        CCC  2012-08-16            3
3238        CCC  2012-08-16            2
3239        CCC  2012-08-16            1

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