简单/新手Excel转换pandas

我有一个excel文档格式如此(列是数据集,行是单元格types,值是逗号分隔的基因名称) 输入Excel格式

我想像这样重新格式化表格(列仍然是数据集,但行现在是基因名称,值是单元格types):

输出Excel格式

我正在pandas做这个。 我将input作为数据框导入并称为“testing”。 我的逻辑是循环遍历每一列,并在每一行循环,采取逗号描述值,拆分,然后使每个这些新的索引。

这种方法显然效率很低,但我甚至无法按预期工作(尽pipe我没有收到错误,只是没有输出, 编辑注: “空白”是一个新的名字,空白的Excel书)

非工作尝试:

for dataSet in test.columns: for index, rows in test.iterrows(): geneList = test[dataSet].loc[index].split(",") for gene in geneList: blank[dataSet].reindex([gene]) 

所以有两个问题:1.我怎样才能得到这个例子工作? 2.我怎样才能更有效地完成这个转变?

谢谢!

gene有重复,所以需要:

您需要通过stack创buildSeries ,然后才能使用stack split和重塑。 对于来自MultiIndex列, MultiIndex调用reset_index

最后一次使用groupby进行list s和最后一次使用groupby进行重塑:

 df = df.stack().str.split(',', expand=True).stack().reset_index(name='a') df = df.groupby(['a', 'level_1'])['level_0'].apply(','.join).unstack() print (df) level_1 dataset 1 dataset 2 dataset 3 a gene1 cell1,cell2,cell3 cell1,cell2,cell3 cell1,cell2,cell3 gene2 cell1,cell2,cell3 cell1,cell2,cell3 cell1,cell2,cell3 gene3 cell1,cell2,cell3 None None gene4 None cell1,cell2,cell3 None gene5 None None cell1,cell2,cell3