Simple/Beginner Excel 转型 Pandas
Simple/Beginner Excel Transformation in Pandas
我有一个 excel 格式的文档(列是数据集,行是细胞类型,值是逗号分隔的基因名称)
我想像这样重新格式化 sheet(列仍然是数据集,但行现在是基因名称,值是细胞类型):
我试图在 pandas 中做到这一点。我将输入作为数据帧导入并命名为 'test'。我的逻辑是遍历每一列,并在每一行中循环,获取逗号分隔的值,拆分这些值,然后使每个值成为一个新索引。
这种方法显然效率很低,但我什至无法让它按预期工作(即使我没有收到错误,只是没有输出,编辑注意: 'blank' 是一本新的空白 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
创建 Series
,
然后可以使用 split
and reshape by stack
. For columns from MultiIndex
call reset_index
.
上次使用 groupby
for list
s and last reshape by unstack
:
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
我有一个 excel 格式的文档(列是数据集,行是细胞类型,值是逗号分隔的基因名称)
我想像这样重新格式化 sheet(列仍然是数据集,但行现在是基因名称,值是细胞类型):
我试图在 pandas 中做到这一点。我将输入作为数据帧导入并命名为 'test'。我的逻辑是遍历每一列,并在每一行中循环,获取逗号分隔的值,拆分这些值,然后使每个值成为一个新索引。
这种方法显然效率很低,但我什至无法让它按预期工作(即使我没有收到错误,只是没有输出,编辑注意: 'blank' 是一本新的空白 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
创建 Series
,
然后可以使用 split
and reshape by stack
. For columns from MultiIndex
call reset_index
.
上次使用 groupby
for list
s and last reshape by unstack
:
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