Добавление мультииндекса к столбцам - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь объединить несколько файлов и вывести их в файл Excel. Мой план состоял в том, чтобы прочитать данные в фрейм данных, выполнить несколько вычислений, а затем записать данные в таблицу Excel. Я хотел бы добавить второй ярлык к моему фрейму данных, который указывает файл, из которого он пришел. Я верю, что мультииндексация - это путь, но я не знаю, как добавить.

пример текущего кадра данных:

    readout    readout
0    1.098      4.514
1    3.185      2.124 
2    0.938      0.369
3    5.283      7.840

пример предполагаемого кадра данных:

    file_1     file_2
    readout    readout
0    1.098      4.514
1    3.185      2.124 
2    0.938      0.369
3    5.283      7.840

Вот код, который я сейчас использую.

# import excel sheet into dataframe
well_reads = pd.read_excel('File.xls', header=0)

# pull positive control and negative control samples into new dataframe
positive_control = well_reads[well_reads['Well'].str.contains('01')]
negative_control = well_reads[well_reads['Well'].str.contains('12')]

# drop postive control and negative control rows from initial dataframe
positive_control_wells = well_reads[well_reads['Well'].str.contains('01')]
index = positive_control_wells.index
well_reads = well_reads.drop(well_reads.index[index])
well_reads = well_reads.reset_index(drop=True)

negative_control_wells = well_reads[well_reads['Well'].str.contains('12')]
index = negative_control_wells.index
well_reads = well_reads.drop(well_reads.index[index])
well_reads = well_reads.reset_index(drop=True)

# Create data frame just containing reads and well id
neutralization_data = well_reads[['CPS (CPS)', 'Well']]

# set index to well id
neutralization_data = neutralization_data.set_index(['Well'])

# identify the geometric mean of the plate
geomean = scipy.stats.gmean(well_reads['CPS (CPS)'])

# identify the IC50 of the plate
IC_50 = geomean/2

# identify the IC80 of the plate
IC_80 = geomean * 0.2


# create a pandas excel writer using xlsxwriter as the engine
writer = pd.ExcelWriter('neutralization data.xlsx', engine='xlsxwriter')

# convert the dataframe to an xlsxwriter excel object
neutralization_data.to_excel(writer, sheet_name='Neutralization Data', startrow=1)

# close the pandas excel writer and output the file
writer.save()

1 Ответ

0 голосов
/ 15 ноября 2018

Как вы сказали, добавление многоиндексных столбцов решит вашу проблему до того, как вы напишите вывод:

df=pd.DataFrame({0:[1.098,3.185,0.938, 5.283],1:[4.514,2.124,0.369, 7.840]})
df.columns=pd.MultiIndex.from_tuples([('file1','readout'),('file2','readout')])

дает

    file1   file2
  readout readout
0   1.098   4.514
1   3.185   2.124
2   0.938   0.369
3   5.283   7.840
...