Как создать мультииндексный фрейм данных из потокового CSV-файла - PullRequest
2 голосов
/ 05 марта 2020

Я передаю данные в CSV-файл. Это запрос:

symbols = ["SPY", "IVV", "SDS", "SH", "SPXL", "SPXS", "SPXU", "SSO", "UPRO" "," VOO "] каждый символ имеет диапазон списка от (0,8)

, как это выглядит в 3 столбцах:

-1583353249601,symbol,SH
-1583353249601,delayed,False
-1583353249601,asset-main-type,EQUITY
-1583353250614,symbol,SH
-1583353250614,last-price,24.7952
-1583353250614,bid-size,362
-1583353250614,symbol,VOO
-1583353250614,bid-price,284.79
-1583353250614,bid-size,3
-1583353250614,ask-size,1
-1583353250614,bid-id,N

моя конечная цель - изменить форму данные: это то, что мне нужно для достижения.

проблемы, с которыми я сталкиваюсь, где:

невозможность группировки по tiemstamp и невозможность поворота.

1) Я попытался создать диктет и так далее. Его можно передать pandas, но в процессе отсутствуют данные. Мне нужно найти способ сгруппировать данные с одинаковым timestamp.it выглядит так, чтобы пропустить строки с одинаковой отметкой времени.

код:

new_data_dict = {}
with open("stream_data.csv", 'r') as data_file:
    data = csv.DictReader(data_file, delimiter=",")
    for row in data:
       item = new_data_dict.get(row["timestamp"], dict())
       item[row["symbol"]] = row["value"]
       new_data_dict[row['timestamp']] = item
data = new_data_dict
data = pd.DataFrame.from_dict(data)
data.T
print(data.T) 

2) это В другом подходе я смог сгруппировать по меткам времени, создав 2 разных данных, но не могу разделить столбец значений на несколько столбцов, чтобы объединить индексы с поздним совпадением.

код:

data = pd.read_csv("tasty_hola.csv",sep=',' ) 

data1 = data.groupby(['timestamp']).apply(lambda v: v['value'].unique())
data = data.groupby(['timestamp']).apply(lambda v: v['symbol'].unique())
data1 = pd.DataFrame({'timestamp':data1.index, 'value':data1.values})

В данный момент я не знаю, правильна ли логика c, которую я пытаюсь применить. очень потерян, не видя света в конце туннеля. Большое спасибо

...