如何使用熊猫

时间:2019-08-01 16:02:58

标签: python pandas

我正在编写一个脚本以对RT-PCR中的数据进行标准化。我正在从tsv文件中读取数据,但我正努力将其放入熊猫数据框中,以免出现麻烦。这里的问题是行索引具有相同的名称,是否可以使其成为层次结构?

我正在使用Python 3.6。我已经尝试过.groupby()和.pivot(),但是我似乎无法让它做我想要的事情。

def calculate_peaks(file_path):
    peaks_tsv = pd.read_csv(file_path, sep='\t', header=0, index_col=0)

我的输入文件是这样的: input file image

我的预期输出:

                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

实际输出:

             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

1 个答案:

答案 0 :(得分:1)

您可以这样做:

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)