首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pandas将多行放在同一行索引下

如何使用pandas将多行放在同一行索引下
EN

Stack Overflow用户
提问于 2019-08-02 00:02:58
回答 1查看 39关注 0票数 1

我正在写一个脚本来标准化RT-PCR的数据。我正在从tsv文件中读取数据,我正在努力将其放入pandas数据框中,以便使其可用。这里的问题是行索引具有相同的名称,是否有可能使其成为分层结构?

我使用的是Python 3.6。我已经尝试了.groupby()和.pivot(),但是我似乎不能让它做我想要的事情。

代码语言:javascript
复制
def calculate_peaks(file_path):
    peaks_tsv = pd.read_csv(file_path, sep='\t', header=0, index_col=0)

我的输入文件是:input file image

我的预期输出:

代码语言:javascript
复制
                EMB.brep1.peak  EMB.brep1.length  EMB.brep2.peak  EMB.brep2.length  EMB.brep3.peak  EMB.brep3.length
primer name
Hv161        0        19276            218.41           20947            218.39           21803            218.26
             1        22906            221.35           26317            221.17           26787            221.21
Hv223        0         4100            305.24            5247            305.37            4885            305.25
             1         2593            435.25            3035            435.30            2819            435.32
             2         4864            597.40            5286            597.20            4965            596.60

实际输出:

代码语言:javascript
复制
             EMB.brep1.peak  EMB.brep1.length  EMB.brep2.peak  EMB.brep2.length  EMB.brep3.peak  EMB.brep3.length
primer name
Hv161                 19276            218.41           20947            218.39           21803            218.26
Hv161                 22906            221.35           26317            221.17           26787            221.21
Hv223                  4100            305.24            5247            305.37            4885            305.25
Hv223                  2593            435.25            3035            435.30            2819            435.32
Hv223                  4864            597.40            5286            597.20            4965            596.60
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-02 00:07:15

您可以这样做:

代码语言:javascript
复制
peaks_tsv = pd.read_csv(file_path, sep='\t', header=0)

peaks_tsv['idx'] = peaks_tsv.groupby('primer name').cumcount()

peaks_tsv.set_index(['primer name', 'idx'], inplace=True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57312974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档