2016-08-10 11 views
0

結果:/自分自身でデータフレームを追加マージする私は、次の操作をマージした新しい列に

data_static = pandas.merge(data_static, data_output[['TICKER', 'DATE', 'rolling_vola_40', 'rolling_vola_80', 'f_rolling_vola_40', 'f_rolling_vola_80', 'rolling_vola_prev_annum', 'rolling_vola_post_annum']], how='left', on=['TICKER', 'DATE']) 

私の問題は今、これは次のヘッダーに結果ということです:

;YEAR;DATE;TICKER;LONG_COMP_NAME;ISSUER_INDUSTRY;INDUSTRY_SECTOR;COUNTRY;ACCOUNTING_STANDARD;ACCOUNTING_STANDARD_OVERRIDE;EQY_FUND_CRNCY;INDEX;DATE_PREV;DATE_NEXT;rolling_vola_40_x;rolling_vola_80_x;f_rolling_vola_40_x;f_rolling_vola_80_x;rolling_vola_prev_annum_x;rolling_vola_post_annum_x;rolling_vola_40_y;rolling_vola_80_y;f_rolling_vola_40_y;f_rolling_vola_80_y;rolling_vola_prev_annum_y;rolling_vola_post_annum_y 

私が欲しいです同じ列に入るデータ:

;YEAR;DATE;TICKER;LONG_COMP_NAME;ISSUER_INDUSTRY;INDUSTRY_SECTOR;COUNTRY;ACCOUNTING_STANDARD;ACCOUNTING_STANDARD_OVERRIDE;EQY_FUND_CRNCY;INDEX;DATE_PREV;DATE_NEXT;rolling_vola_40;rolling_vola_80;f_rolling_vola_40;f_rolling_vola_80;rolling_vola_prev_annum;rolling_vola_post_annum; 

このように、次のように十分な):

TICKER Val1_x Val2_x Val3_x Val1_y Val2_y Val3_y 
    A  80  6  1  NaN  NaN  NaN 
    B  NaN  NaN  NaN  10  12  14 

私は彼らがこのようになりたい:

TICKER Val1  Val2  Val3 
    A  80  6  1 
    B  10  12  14 

私のマージは、列TICKERDATEに参加し、そのサンプルデータによって混同しないでください。この辺り

+0

私はdownvoteを理解していません。問題は本物であり、私はまだ動作する解決策を見ていない。私は右のすべての単一のstackoverflowの記事を読んで、次のレベルのためにそうしました。 – Spurious

答えて

0

作業が終わりappend最初にしmergeそれらを使用することです:

data_store = pandas.DataFrame(columns=('TICKER', 'DATE', 'rolling_vola_40', 'rolling_vola_80', 'f_rolling_vola_40', 'f_rolling_vola_80', 'rolling_vola_prev_annum', 'rolling_vola_post_annum')) 

for index, row in data_static.iterrows(): 
    data_output = vol(row['TICKER'], row['DATE'], row['DATE_PREV'], row['DATE_NEXT']) 
    if type(data_output) != type(None): 
     data_store = data_store.append(data_output[['TICKER', 'DATE', 'rolling_vola_40', 'rolling_vola_80', 'f_rolling_vola_40', 'f_rolling_vola_80', 'rolling_vola_prev_annum', 'rolling_vola_post_annum']]) 

data_static = pandas.merge(data_static, data_store[['TICKER', 'DATE', 'rolling_vola_40', 'rolling_vola_80', 'f_rolling_vola_40', 'f_rolling_vola_80', 'rolling_vola_prev_annum', 'rolling_vola_post_annum']], how='left', on=['TICKER', 'DATE']) 
data_static.to_csv('test.csv', sep=';', encoding='utf-8') 
関連する問題