简单/新手Excel转换pandas
我有一个excel文档格式如此(列是数据集,行是单元格types,值是逗号分隔的基因名称)
我想像这样重新格式化表格(列仍然是数据集,但行现在是基因名称,值是单元格types):
我正在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