我使用read_csv将具有大约200列具有唯一列名的数据集导入到pandas数据帧中。
Data.columns
Index([u'SAVERECORDER', u'SAVECHANNEL', u'STARTTIME', u'INT001', u'INT002',
u'INT003', u'INT004', u'INT005', u'INT006', u'INT007',
...
u'INT092', u'INT093', u'INT094', u'INT095', u'INT096', u'INT097',
u'INT098', u'INT099', u'INT100', u'LSTIME'],
dtype='object', length=104)
我想从每个列INT001到INT099中提取第100行。如果只有很少的列我会手动完成它,但我不知道如何从所有行中提取某些行号并存储在一个numpy数组中。所有列INT001到INT099都包含温度值为double。
答案 0 :(得分:1)
我会使用生成器来创建所需列的所有列的列表
from string import zfill
import numpy as np
cols = ['INT0' + zfill(str(i), 2) for i in np.arange(1, 100, 1)]
然后你可以使用pandas .iloc按整数位置索引,如here中所读
之后你可以在数组上调用.sum()。
答案 1 :(得分:1)
数据:
In [24]: df
Out[24]:
a b c INT001 INT002 INT003
0 8 1 1 4 2 6
1 2 9 2 5 3 6
2 4 2 9 3 5 2
3 3 2 9 9 2 7
4 4 4 3 7 8 9
5 1 5 6 3 9 8
6 2 2 9 6 1 7
7 4 3 2 9 6 8
8 6 7 2 1 1 3
9 6 7 9 4 3 6
为numpy数组:
In [30]: df.ix[7, 'INT001':'INT003'].values
Out[30]: array([9, 6, 8])
或
In [32]: df.ix[7, df.filter(like='INT0').columns].values
Out[32]: array([9, 6, 8])
作为pandas数据框:
In [25]: df.ix[7:7, df.filter(like='INT0').columns]
Out[25]:
INT001 INT002 INT003
7 9 6 8
或
In [26]: df.ix[df.index==7, df.filter(like='INT0').columns]
Out[26]:
INT001 INT002 INT003
7 9 6 8
或
In [28]: df.ix[df.index==7, 'INT001':'INT003']
Out[28]:
INT001 INT002 INT003
7 9 6 8
设定:
df = pd.DataFrame(np.random.randint(1,10,(10,6)), columns=list('abc')+['INT001','INT002','INT003'])