2014-05-09 26 views
1

我有一個從CSV文件創建的結構化數組。基於列名的子集結構化數組

我有很多字段/列。我想創建一個子集數組。

z=mydata[['z1','z2','z3']]會做伎倆,但有時z只從z1-z2z1-z10

是否有一種簡單的方法來將列名以z開頭的所有列進行子集劃分,而不管數據中有多少列?顯然,結果數組將有不同數量的列,但沒關係。通過所有的列名的

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

有效循環,你和檢查列名的條件匹配:

+1

你能舉幾個例子嗎?從迄今爲止給我們的東西來看,它還不清楚。 –

+0

根據我從CSV讀取的數據集,我可能有列z1,z2,z3,但在另一種情況下,它可能是z1,z2,z3,z4,z5。我想創建一個數組z,它始終將mydata中所有以'z'開頭的列進行分組。即我不必改變陳述z = mydata [['z1','z2','z3']]或z = mydata [['z1','z2','z3','z4',' z5']]等。 – user3609671

回答

1

不是很漂亮,但你可以做以下。如果有更好的方法,我會非常感興趣,因爲我在使用pd.DataFrame.columns屬性的熊貓類似的操作。

+0

那簡單!謝謝! – user3609671

+1

@Ophion:對於熊貓版本,你可以做'df.columns.to_series()。str.startswith(「Z」)'',但老實說我經常使用listcomp,因爲它更健壯。 – DSM