有没有办法避免在numpy/pandas中预定义列标题的名称来创建结构化数组,而是让numpy/pandas在第一行中读取作为标题名称,并将其余数据加载到结构化数组中? 例如,对于这些数据,
# Date low open close
# 2015-08-08 266.00 280.04 266.82
# 2015-07-08 233.00 280.04 266.82
我想调用一些像a = pd.read_csv()
这样的函数,并能够立即a['Date']
访问列,而无需预定义names = [Date, low, open, close]
并将其传递给read_csv()
.这可能吗?
为了完整起见,举一个 numpy 示例:
rec_arr = np.genfromtxt("try.csv", delimiter = " ", names=True, dtype=None)
rec_arr
array([(b'2015-08-08', 266., 280.04, 266.82),
(b'2015-07-08', 233., 280.04, 266.82)],
dtype=[('Date', 'S10'), ('low', '<f8'), ('open', '<f8'), ('close', '<f8')])
然后,您可以访问如下列:
rec_arr['close']
array([ 266.82, 266.82])
并像往常一样做一些数学运算:
rec_arr['close'].mean()
266.81999999999999
如果read_csv
中没有names
参数,则第一行数据将创建df
列。
所以工作:
df = pd.read_csv('file.csv')
#if necessary change default parameter sep=','
df = pd.read_csv('file.csv', sep=';')
print (df)
Date low open close
0 2015-08-08 266.0 280.04 266.82
1 2015-07-08 233.0 280.04 266.82
print (df.columns)
Index(['Date', 'low', 'open', 'close'], dtype='object')