【问题标题】:subset structured array based on column names基于列名的子集结构化数组
【发布时间】:2014-05-09 18:11:04
【问题描述】:

我有一个从 CSV 文件创建的结构化数组。

我有很多字段/列。我想创建一个子集数组。

z=mydata[['z1','z2','z3']] 可以解决问题,但有时z 仅来自z1-z2z1-z10

是否有一种简单的方法可以对列名以 z 开头的所有列进行子集化,而不管数据中有多少列?显然,结果数组将具有不同的列数,但这很好。

【问题讨论】:

  • 你能再给我们一些例子吗?到目前为止,您给我们的内容还不清楚。
  • 根据我从 CSV 读取的数据集,我可能有 z1、z2、z3 列,但在另一种情况下,它可能是 z1、z2、z3、z4、z5。我想创建数组 z,它总是将 mydata 中以“z”开头的所有列子集。 IE。我不必不断更改语句 z=mydata[['z1','z2','z3']] 或 z=mydata[['z1','z2','z3','z4',' z5']] 等

标签: python arrays python-2.7 numpy subset


【解决方案1】:

不是很漂亮,但您可以执行以下操作:

z = mydata[[x for x in a.dtype.names if 'z' in x]]

有效地循环遍历所有列名并检查列名是否符合条件。如果有更好的方法,我会非常感兴趣,因为我使用 pd.DataFrame.columns 属性在 pandas 中进行类似操作。

【讨论】:

  • 就这么简单!谢谢!
  • @Ophion:对于 pandas 版本,您可以执行 df.columns.to_series().str.startswith("Z") 之类的操作,但老实说,我经常使用 listcomp,因为它更健壮。
猜你喜欢
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2019-09-07
相关资源
最近更新 更多