Python 如何从堆栈中取出数据

Python 如何从堆栈中取出数据,python,pandas,Python,Pandas,我的计算欧几里得距离的代码。 首先,我读了一个文件,其中有一系列的系统发育距离度量,并从中计算欧几里德距离。 我的问题是在文件的末尾将数据保存到输出。 我构建for循环的方式给我提供了堆叠的数据,但是,我希望数据不堆叠。 请参阅下面我的输出和所需输出的详细信息 # -*- coding: utf-8 -*- import os import sys import pandas as pd import numpy as np from scipy.spatial.distance import

我的计算欧几里得距离的代码。 首先,我读了一个文件,其中有一系列的系统发育距离度量,并从中计算欧几里德距离。 我的问题是在文件的末尾将数据保存到输出。 我构建for循环的方式给我提供了堆叠的数据,但是,我希望数据不堆叠。 请参阅下面我的输出和所需输出的详细信息

# -*- coding: utf-8 -*-
import os
import sys
import pandas as pd
import numpy as np
from scipy.spatial.distance import squareform, pdist
import scipy
pd.options.mode.chained_assignment = None  # default='warn'
from itertools import combinations
from collections import Counter
import pickle
f = open(sys.argv[1], 'r')
w = open(sys.argv[2], 'w')

freader=pd.read_csv(f,sep='\t')
vector2=['kU.','kUn.','kL.']#,'kLn.','Sim.','Trip.','RF.','KC.','KCw.']                                                                 
vector1=['kU','kUn','kL']#,'kLn','Sim','Trip','RF','KC','KCw']


comb1=sum([map(list, combinations(vector1, i)) for i in range(len(vector1) + 1)], [])

for i in comb1:
    if i!=[]:
        new_f1 = freader[i]
        j = [word.replace(word, word + '.') for word in i]
        new_f2 = freader[j]
        ary = scipy.spatial.distance.cdist(new_f1, new_f2)
        v=np.diag(ary)
        v = v.tolist()
        distances=''.join(i)
        euclidean='\n'.join(map(str,v))
        w.write(distances + '\n' + euclidean + '\n')
        #print w

f.close()
给我堆叠输出文件,如:

kU
0.1196105158
0.2359754815
kUn
0.5221363287
0.0006352575
kL
0.0986327691
0.2722213035
kUkUn
0.5356612934
0.2359763366
kUkL
0.1550325728
0.3602622183
kUnkL
0.5313706511
0.2722220447
kUkUnkL
0.5446663606
0.3602627784
但是,我希望有此未堆叠的输出文件:

kU              kUn             kL              kUkUn           kUkL            kUnkL           kUkUnkL
0.1196105158    0.5221363287    0.0986327691    0.5356612934    0.1550325728    0.5313706511    0.5446663606
0.2359754815    0.0006352575    0.2722213035    0.2359763366    0.3602622183    0.2722220447    0.3602627784

可以重塑基础阵列的形状

pd.DataFrame(df.values.reshape(len(df)//3, 3)).set_index(0).T

    kU              kUn             kL              kUkUn           kUkL            kUnkL   kUkUnkL
1   0.1196105158    0.5221363287    0.0986327691    0.5356612934    0.1550325728    0.5313706511    0.5446663606
2   0.2359754815    0.0006352575    0.2722213035    0.2359763366    0.3602622183    0.2722220447    0.3602627784

可以重塑基础阵列的形状

pd.DataFrame(df.values.reshape(len(df)//3, 3)).set_index(0).T

    kU              kUn             kL              kUkUn           kUkL            kUnkL   kUkUnkL
1   0.1196105158    0.5221363287    0.0986327691    0.5356612934    0.1550325728    0.5313706511    0.5446663606
2   0.2359754815    0.0006352575    0.2722213035    0.2359763366    0.3602622183    0.2722220447    0.3602627784

w
是熊猫数据帧吗?不,它不是…但是如果需要它可能是熊猫数据帧吗?不,它不是…但是如果需要它可能是