Может ли кто-нибудь дать мне быстрый / понятный урок по захвату определенных точек данных в мультииндексном фрейме данных ниже?Я смотрел учебники весь день, но ни один из них не был очень полезным.Это должно быть просто для тех, кто знает панд.
Как я могу сделать следующее:
Извлечь 'close' из 'AAPL' в последнюю датуфрейм данных
Если «закрыто»> «открыто» из «AAPL» на конкретную дату, извлеките все данные для «AAPL» и добавьте в новый фрейм данных
Добавить новый столбец для каждого символа (AAPL, FB), который помечен как «диапазон» и является «высоким» - «низким» для каждого дня
.
symbol AAPL FB
ohlcv open high low close adj volume open high low close adj volume
Date
2018-09-17 222.15 222.95 217.27 217.88 217.88 37195100 161.92 162.06 159.77 160.58 160.58 21005300
2018-09-18 217.79 221.85 217.12 218.24 218.24 31571700 159.39 161.76 158.87 160.30 160.30 22465200
2018-09-19 218.50 219.62 215.30 218.37 218.37 27123800 160.08 163.44 159.48 163.06 163.06 19629000
2018-09-20 220.24 222.28 219.15 220.03 220.03 26460800 164.50 166.45 164.47 166.02 166.02 18824200
2018-09-21 220.78 221.36 217.29 217.66 217.66 96246748 166.64 167.25 162.81 162.93 162.93 25956794
Вот словарь Dataframe в качестве одного из запрошенных комментариев,
df = pd.DataFrame({('AAPL', 'adj_close'): {
pd.Timestamp('2018-01-02 00:00:00'): 170.3,
pd.Timestamp('2018-01-03 00:00:00'): 170.27,
pd.Timestamp('2018-01-04 00:00:00'): 171.07,
pd.Timestamp('2018-01-05 00:00:00'): 173.01,
pd.Timestamp('2018-01-08 00:00:00'): 172.37},
('AAPL', 'close'): {
pd.Timestamp('2018-01-02 00:00:00'): 172.26,
pd.Timestamp('2018-01-03 00:00:00'): 172.23,
pd.Timestamp('2018-01-04 00:00:00'): 173.03,
pd.Timestamp('2018-01-05 00:00:00'): 175.0,
pd.Timestamp('2018-01-08 00:00:00'): 174.35},
('AAPL', 'high'): {
pd.Timestamp('2018-01-02 00:00:00'): 172.3,
pd.Timestamp('2018-01-03 00:00:00'): 174.55,
pd.Timestamp('2018-01-04 00:00:00'): 173.47,
pd.Timestamp('2018-01-05 00:00:00'): 175.37,
pd.Timestamp('2018-01-08 00:00:00'): 175.61},
('AAPL', 'low'): {
pd.Timestamp('2018-01-02 00:00:00'): 169.26,
pd.Timestamp('2018-01-03 00:00:00'): 171.96,
pd.Timestamp('2018-01-04 00:00:00'): 172.08,
pd.Timestamp('2018-01-05 00:00:00'): 173.05,
pd.Timestamp('2018-01-08 00:00:00'): 173.93},
('AAPL', 'open'): {
pd.Timestamp('2018-01-02 00:00:00'): 170.16,
pd.Timestamp('2018-01-03 00:00:00'): 172.53,
pd.Timestamp('2018-01-04 00:00:00'): 172.54,
pd.Timestamp('2018-01-05 00:00:00'): 173.44,
pd.Timestamp('2018-01-08 00:00:00'): 174.35},
('AAPL', 'volume'): {
pd.Timestamp('2018-01-02 00:00:00'): 25555900,
pd.Timestamp('2018-01-03 00:00:00'): 29517900,
pd.Timestamp('2018-01-04 00:00:00'): 22434600,
pd.Timestamp('2018-01-05 00:00:00'): 23660000,
pd.Timestamp('2018-01-08 00:00:00'): 20567800},
('FB', 'adj_close'): {
pd.Timestamp('2018-01-02 00:00:00'): 181.42,
pd.Timestamp('2018-01-03 00:00:00'): 184.67,
pd.Timestamp('2018-01-04 00:00:00'): 184.33,
pd.Timestamp('2018-01-05 00:00:00'): 186.85,
pd.Timestamp('2018-01-08 00:00:00'): 188.28},
('FB', 'close'): {
pd.Timestamp('2018-01-02 00:00:00'): 181.42,
pd.Timestamp('2018-01-03 00:00:00'): 184.67,
pd.Timestamp('2018-01-04 00:00:00'): 184.33,
pd.Timestamp('2018-01-05 00:00:00'): 186.85,
pd.Timestamp('2018-01-08 00:00:00'): 188.28},
('FB', 'high'): {
pd.Timestamp('2018-01-02 00:00:00'): 181.58,
pd.Timestamp('2018-01-03 00:00:00'): 184.78,
pd.Timestamp('2018-01-04 00:00:00'): 186.21,
pd.Timestamp('2018-01-05 00:00:00'): 186.9,
pd.Timestamp('2018-01-08 00:00:00'): 188.9},
('FB', 'low'): {
pd.Timestamp('2018-01-02 00:00:00'): 177.55,
pd.Timestamp('2018-01-03 00:00:00'): 181.33,
pd.Timestamp('2018-01-04 00:00:00'): 184.1,
pd.Timestamp('2018-01-05 00:00:00'): 184.93,
pd.Timestamp('2018-01-08 00:00:00'): 186.33},
('FB', 'open'): {
pd.Timestamp('2018-01-02 00:00:00'): 177.68,
pd.Timestamp('2018-01-03 00:00:00'): 181.88,
pd.Timestamp('2018-01-04 00:00:00'): 184.9,
pd.Timestamp('2018-01-05 00:00:00'): 185.59,
pd.Timestamp('2018-01-08 00:00:00'): 187.2},
('FB', 'volume'): {
pd.Timestamp('2018-01-02 00:00:00'): 18151900,
pd.Timestamp('2018-01-03 00:00:00'): 16886600,
pd.Timestamp('2018-01-04 00:00:00'): 13880900,
pd.Timestamp('2018-01-05 00:00:00'): 13574500,
pd.Timestamp('2018-01-08 00:00:00'): 17994700}})