Вставка пробела или пустого столбца после N-го столбца в кадре данных - PullRequest
0 голосов
/ 31 октября 2018

У меня есть 3 кадра данных, и я объединил их в один кадр данных. Однако теперь мне нужно вставлять пустой столбец после каждого второго столбца (корреляция) в этом кадре данных, а затем запишите его, чтобы преуспеть. Таким образом, каждый кадр данных выглядит так:

Variable_Name       correlation 
Pending_Disconnect  0.553395448 
status_Active       0.539464806 
days_active         0.414774231 
days_pend_disco     0.392915837 
prop_tenure         0.074321692 
abs_change_3m       0.062267386 

И после их конкатенации, а затем после добавления пробела или пустого столбца они должны иметь формат:

Variable_Name       correlation         Variable_Name   correlation         Variable_Name   correlation
Pending_Disconnect  0.553395448         Pending_Change  0.043461995         active_frq_N    0.025697016
status_Active       0.539464806         status_Active   0.038057697         active_frq_Y    0.025697016
days_active         0.414774231         ethnic          0.037503202         ethnic          0.025195149
days_pend_disco     0.392915837         days_active     0.037227245         ecgroup         0.023192408
prop_tenure         0.074321692         archetype_grp   0.035761434         age             0.023121305
abs_change_3m       0.062267386         age_nan         0.035761434         archetype_nan   0.023121305

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Используйте range один для каждых 2 столбцов и один для параметра startcol как:

import xlsxwriter
writer = pd.ExcelWriter('pandas_column_formats.xlsx',engine='xlsxwriter')

for col,st_col in zip(range(0,6,2), range(0,7,3)):
    df.iloc[:,col:col+2].to_excel(writer, index=False, startcol=st_col)

writer.save()
writer.close()

Если у вас есть фреймы данных отдельно, то:

for df,st_col  in zip([df1,df2,df3], range(0,7,3)):
    df.to_excel(writer, index=False, startcol=st_col)

, который сохранит в Excel как: output

0 голосов
/ 31 октября 2018

Попробуйте использовать метод 'insert'. Примерно так:

N = len(df.columns) - 2 # number of columns, starting 2 before the last one
for i in range(N,2,-2): # going backwards since the column numbers change during insertion
    df.insert(i,'','',allow_duplicates=True)
...