使用标签类型将数据与熊猫数据框隔离

时间:2018-09-30 05:40:39

标签: python pandas numpy

我正在使用pandas中的python处理文本文件。该文件包含文本和数字数据,格式如下图所示:

enter image description here

与上述图片对应的实际文本文件可以在here中找到。我正在使用

将其导入pandas
df = pd.read_csv('dum.txt',sep='\t', header=[0,1], index_col=0)

我想从此Tag1数据帧中获得不同标签类型(Tag5Tag6pandas)的单独矩阵。特别是,我想获得在标签Tag1下分组为一个numpy数组(形状为(8,3))的列0、1和2,属于{{1}的列3和4。 }作为另一个numpy数组(形状:Tag5),第5列和第6列(属于(8,2))作为另一个numpy数组(形状:Tag6)。我怎样才能做到这一点?我将非常感谢您的协助。

1 个答案:

答案 0 :(得分:1)

df.values与所需的列一起使用:

df = pd.read_csv('dum.txt',sep='\t',header=[0,1],index_col=0)

df[['T1','T2','T3']].values

array([[1.1, 2.1, 3.1],
       [1.2, 2.2, 3.2],
       [1.3, 2.3, 3.3],
       [1.4, 2.4, 3.4],
       [1.5, 2.5, 3.5],
       [1.6, 2.6, 3.6],
       [1.7, 2.7, 3.7],
       [1.8, 2.8, 3.8]])

df[['T4','T5']].values

array([[4.1, 5.1],
       [4.2, 5.2],
       [4.3, 5.3],
       [4.4, 5.4],
       [4.5, 5.5],
       [4.6, 5.6],
       [4.7, 5.7],
       [4.8, 5.8]])

df[['T6','T7']].values

array([[6.1, 7.1],
       [6.2, 7.2],
       [6.3, 7.3],
       [6.4, 7.4],
       [6.5, 7.5],
       [6.6, 7.6],
       [6.7, 7.7],
       [6.8, 7.8]])

或者,如果您有索引[0,1,2],[3,4],则:

df[df.columns[[0,1,2]]].values
array([[1.1, 2.1, 3.1],
       [1.2, 2.2, 3.2],
       [1.3, 2.3, 3.3],
       [1.4, 2.4, 3.4],
       [1.5, 2.5, 3.5],
       [1.6, 2.6, 3.6],
       [1.7, 2.7, 3.7],
       [1.8, 2.8, 3.8]])

OR:

df.swaplevel(0,1,axis=1).Tag1.values
array([[1.1, 2.1, 3.1],
       [1.2, 2.2, 3.2],
       [1.3, 2.3, 3.3],
       [1.4, 2.4, 3.4],
       [1.5, 2.5, 3.5],
       [1.6, 2.6, 3.6],
       [1.7, 2.7, 3.7],
       [1.8, 2.8, 3.8]])