Как вывести полную таблицу результатов из вложенной тройки для цикла через столбцы панд? - PullRequest
0 голосов
/ 30 января 2019

Я написал функцию для вычисления градиента между двумя столбцами двух фреймов данных и вывода этого градиента в новый фрейм данных.Эти столбцы имеют одинаковые заголовки, и при объединении столбцов добавляется суффикс _A или _B.

Заголовки столбцов являются химическими формулами; ожидается, что вывод таблицы будет осуществляться в столбцах данных, где имеется градиент линейной регрессии между двумя столбцами для одной и той же химической формулы из двух кадров данных.

Входные кадры данных содержат столбцы с заголовками химических формул, целочисленные значения в каждом из столбцов и индексируются с указанием даты и времени.

def find_gradient(dfA, dfB):

dfA.resample('1min')
dfB.resample('1min')

combined_df = dfA.merge(dfB,how='inner',left_index=True,right_index=True, suffixes=('_A', "_B"))
combined_df= combined_df.dropna(how='all', axis=0)

#return combined_df

listofcols = combined_df.columns
listofcols = listofcols.tolist()

listofformulas = dfA.columns
listofformulas = listofformulas.tolist()


for cols in listofcols:
for formula in listofformulas: 

    A = [col for col in combined_df if col.startswith(formula) and col.endswith('_A')]#.str] # startswith(formula)
    B = [col for col in combined_df if col.startswith(formula) and col.endswith('_B')]#.str] #startswith(formula)

    q1 = combined_df[A]
    q2 = combined_df[B]

    x1 = np.squeeze(np.array(q1))
    x2 = np.squeeze(np.array(q2))

    gradient = np.polyfit(x1,x2,0) ## fits a linear regression and forces the y-intercept to 0


    GradientFormulas = pd.DataFrame(columns=['formula','gradient'])
    GradientFormulas = GradientFormulas.append([{'formula':formula,'gradient':gradient}])

    return GradientFormulas

Ожидается, что на выходе будет таблица с таким количеством строк, сколько есть химических формул (столбцы во входных данных) и одним значением градиента, соответствующим каждой строке.Однако в настоящее время выходные данные показывают только химическую формулу и градиент для первого столбца.

...