Как запустить цикл Python For с использованием разных фреймов данных для создания нового фрейма данных, проиндексированного по времени? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь запустить цикл for, чтобы сгенерировать новый фрейм данных panadas, в котором я комбинирую разные значения из другого фрейма данных, однако я продолжаю находить ошибки, так как не могу индексировать индекс из первого фрейма данных.

Любая помощь будет принята с благодарностью.


import pandas as pd 
import numpy as np 

df_fly = pd.DataFrame({'name': ['a','b','c','d','e'], 'left': ['UKT 1.75 7 19','UKT 1.75 7 19','UKT 1.75 7 19','UKT 1.75 7 19','UKT 1.75 7 19'], 'centre': ['UKT 3.75 9 19','UKT 4.75 3 20','UKT 4.75 3 20','UKT 4.75 3 20','UKT 4.75 3 20'], 'right': ['UKT 4.75 3 20','UKT 2 7 20','UKT 3.75 9 20','UKT 1.5 1 21','UKT 3.75 9 21']})
df_tit = df_fly['name']
df_fly = df_fly.set_index('name')
df_fly

Bonds = {'dates': ["7/2/2019", "7/1/2019", "6/28/2019"],
        'UKT 1.75 7 19' : [0.75, 0.75, .762], 'UKT 3.75 9 19' : [.663, .663, .665],'UKT 4.75 3 20' : [0.68, 0.68, .691],'UKT 2 7 20' : [.679, .679, .688],'UKT 3.75 9 20' : [.602, .602, 0.61],'UKT 1.5 1 21' : [.602, .602, 0.61],'UKT 3.75 9 21':[.566, .566, .574]}


df_ytm = pd.DataFrame(Bonds,columns= ['dates', 'UKT 1.75 7 19','UKT 3.75 9 19','UKT 4.75 3 20','UKT 2 7 20','UKT 3.75 9 20','UKT 1.5 1 21','UKT 3.75 9 21'])

df_ytm['datetime'] = pd.to_datetime(df_ytm['dates'])
df_ytm = df_ytm.set_index('datetime')
df_ytm.drop(['dates'], axis=1, inplace=True)
df_ytm


def fly(left,centre, right):
    return (2*(df_ytm[centre])-(df_ytm[right]+df_ytm[left]))

df_ftm=pd.DataFrame()

for flyt in df_tit:
    left=df_fly.loc[flyt]['left']
    centre=df_fly.loc[flyt]['centre']
    right=df_fly.loc[flyt]['right']
    data=fly(left,centre,right)
    name = (left,centre,right)

    df_ftm.append({name:data},ignore_index=True)

print(df_ftm)

Я ищу новый индексированный по времени фрейм данных с заголовками имен мух, содержащихся в df_tit

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