Объединение двух списков рядов панд: 1) один, содержащий исторические временные ряды, и 2) другой, содержащий прогнозные временные ряды - PullRequest
0 голосов
/ 11 октября 2019

Эти два списка содержат одну и ту же серию данных с df_hist_list, представляющим историческую серию, и forecast_list, содержащим прогнозы. Я хотел бы объединить две серии, в которых результатом является список двух компонентов вместе (т. Е. Df_Cash_DF_history и Cash_Due_From_Banks объединяют результат в полную серию вместе в одну серию).

df_hist_list=[df_Cash_DF_history,df_Int_Dep_w_Banks_history,df_Corp_Sec_history,\
              df_USGovt_Agency_history,df_Muni_history,df_Unreal_G_L_history,\
              ...
              df_Furn_Equip_Exp_history,df_Data_Proc_Exp_history,df_Promo_Exp_history,\
              df_Oth_Op_Exp_history,df_ORE_Exp_history,df_Inc_Tax_Exp_history]


forecast_list=[Cash_Due_From_Banks,Int_Bear_Dep_w_Banks,Corp_Sec,USGovt_Agency,\
               Muni,Unreal_Gain_Loss,RE_Loans,Pers_Loans,Ag_Loans,Bus_Loans,\
               ...
               Emp_Ben_Exp,Occ_Exp,Furn_Equip_Exp,Data_Proc_Exp,Promo_Exp,\
               Oth_Op_Exp,ORE_Exp,Inc_Tax_Exp]

df_Cash_DF_history
Out[114]: 
Q1_2018    8739244.00
Q2_2018    5698279.00
Q3_2018    8849542.00
Q4_2018    1503914.00
Q1_2019    7417558.00
Q2_2019    6000285.00
Q3_2019    8697910.00
Name: TOTAL CASH & DUE FROM BANKS, dtype: object

Cash_Due_From_Banks
Out[115]: 
Q3_2019   28,697,910
Q4_2019   27,810,123
Q1_2020   26,937,969
Q2_2020   26,081,183
Q3_2020   25,239,505
Q4_2020   24,412,679
Q1_2021   23,600,453
Q2_2021   22,802,580
Q3_2021   22,018,816
dtype: float64

1 Ответ

0 голосов
/ 11 октября 2019

Я предполагаю, что каждый DataFrame имеет один столбец, а то, что вы представили как Quarter столбец, на самом деле является index .

Давайте начнем с случая 2 DataFrames.

Чтобы взять крайний левый столбец из таких двух фреймов данных и объединить их по вертикали в Series , определите следующую функцию:

def myConcat(df1, df2):
    s = pd.concat([df1.iloc[:,0], df2.iloc[:,0]])
    return s[~s.index.duplicated()]

Я заметил, что ваши 2 фрейма данныхесть одна строка из того же квартала, поэтому необходимо исключить такие повторения, и для этого я использовал index.duplicated () .

Затем, например, для обоих исходных фреймов данных, которыеВы представили, назовите это:

myConcat(df_Cash_DF_history, Cash_Due_From_Banks)

И обработать 2 списки DataFrames и сгенерировать список из Series объектов, полученных в результатепопарная конкатенация, запустите:

[ myConcat(df1, df2) for df1, df2 in zip(df_hist_list, forecast_list) ]
...