41

hdf = pandas.HDFStore('Survey.h5')pandas パッケージを介して、h5 ファイルから読み込まれた調査データを使用しています。この 内ではDataFrame、すべての行が 1 つの調査の結果であり、列は 1 つの調査内のすべての質問に対する回答です。

私は、このデータセットをDataFrame、特定の質問に対する特定の回答が示されている行、つまりこの列の値がすべて同じ行のみを含む、より小さなデータセットに縮小することを目指しています。この条件ですべての行のインデックス値を特定できますが、この行を削除する方法や、これらの行のみで新しい df を作成する方法がわかりません。

4

2 に答える 2

46
In [36]: df
Out[36]:
   A  B  C  D
a  0  2  6  0
b  6  1  5  2
c  0  2  6  0
d  9  3  2  2

In [37]: rows
Out[37]: ['a', 'c']

In [38]: df.drop(rows)
Out[38]:
   A  B  C  D
b  6  1  5  2
d  9  3  2  2

In [39]: df[~((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[39]:
   A  B  C  D
b  6  1  5  2
d  9  3  2  2

In [40]: df.ix[rows]
Out[40]:
   A  B  C  D
a  0  2  6  0
c  0  2  6  0

In [41]: df[((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[41]:
   A  B  C  D
a  0  2  6  0
c  0  2  6  0
于 2012-08-09T11:26:08.873 に答える
22

インデックスがすでにわかっている場合は、次を使用できます.loc

In [12]: df = pd.DataFrame({"a": [1,2,3,4,5], "b": [4,5,6,7,8]})

In [13]: df
Out[13]:
   a  b
0  1  4
1  2  5
2  3  6
3  4  7
4  5  8

In [14]: df.loc[[0,2,4]]
Out[14]:
   a  b
0  1  4
2  3  6
4  5  8

In [15]: df.loc[1:3]
Out[15]:
   a  b
1  2  5
2  3  6
3  4  7
于 2016-12-11T03:14:24.630 に答える