我正在使用pandas
中的python
处理文本文件。该文件包含文本和数字数据,格式如下图所示:
与上述图片对应的实际文本文件可以在here中找到。我正在使用
将其导入pandas
中
df = pd.read_csv('dum.txt',sep='\t', header=[0,1], index_col=0)
我想从此Tag1
数据帧中获得不同标签类型(Tag5
,Tag6
,pandas
)的单独矩阵。特别是,我想获得在标签Tag1
下分组为一个numpy数组(形状为(8,3)
)的列0、1和2,属于{{1}的列3和4。 }作为另一个numpy数组(形状:Tag5
),第5列和第6列(属于(8,2)
)作为另一个numpy数组(形状:Tag6
)。我怎样才能做到这一点?我将非常感谢您的协助。
答案 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]])