Python 基于列名的子集结构数组
我有一个从CSV文件创建的结构化数组 我有许多字段/列。我想创建一个子集数组Python 基于列名的子集结构数组,python,arrays,python-2.7,numpy,subset,Python,Arrays,Python 2.7,Numpy,Subset,我有一个从CSV文件创建的结构化数组 我有许多字段/列。我想创建一个子集数组 z=mydata[['z1','z2','z3']会起作用,但有时z只从z1-z2开始,或者z1-z10 是否有一种简单的方法可以将列名以z开头的所有列子集化,而不管数据中有多少列?显然,生成的数组将有不同的列数,但这很好。不是很漂亮,但您可以执行以下操作: z = mydata[[x for x in a.dtype.names if 'z' in x]] 实际上,您可以遍历所有列名,并检查列名是否符合条件。如果有
z=mydata[['z1','z2','z3']
会起作用,但有时z
只从z1-z2
开始,或者z1-z10
是否有一种简单的方法可以将列名以z开头的所有列子集化,而不管数据中有多少列?显然,生成的数组将有不同的列数,但这很好。不是很漂亮,但您可以执行以下操作:
z = mydata[[x for x in a.dtype.names if 'z' in x]]
实际上,您可以遍历所有列名,并检查列名是否符合条件。如果有更好的方法,我会非常感兴趣,因为我使用
pd.DataFrame.columns
属性在pandas中执行类似的操作。您能给我们更多的例子吗?到目前为止,您给我们的信息还不清楚。根据我从CSV读取的数据集,我可能有z1、z2、z3列,但在另一种情况下,可能是z1、z2、z3、z4、z5列。我想创建一个数组z,该数组始终是mydata中以“z”开头的所有列的子集。也就是说,我不必一直更改语句z=mydata[['z1','z2','z3']]或z=mydata[['z1','z2','z3','z4','z5']]等等。这很简单!谢谢大家!@Ophion:对于pandas版本,您可以执行类似于df.columns.to_series().str.startswith(“Z”)
的操作,但老实说,我经常使用listcomp,因为它更健壮。