私はDataFrame
に75列あります。列が条件を満たす場合に行を選択します。
特定の列の配列の条件に基づいて行を選択するにはどうすればよいですか?
df[(df.values > 1.5).any(1)]
しかし、私は単に列3:45でこれをやりたいとしましょう。
私はDataFrame
に75列あります。列が条件を満たす場合に行を選択します。
特定の列の配列の条件に基づいて行を選択するにはどうすればよいですか?
df[(df.values > 1.5).any(1)]
しかし、私は単に列3:45でこれをやりたいとしましょう。
順序位置を使用して列をスライスする使用ix
:
In [31]:
df = pd.DataFrame(np.random.randn(5,10), columns=list('abcdefghij'))
df
Out[31]:
a b c d e f g \
0 -0.362353 0.302614 -1.007816 -0.360570 0.317197 1.131796 0.351454
1 1.008945 0.831101 -0.438534 -0.653173 0.234772 -1.179667 0.172774
2 0.900610 0.409017 -0.257744 0.167611 1.041648 -0.054558 -0.056346
3 0.335052 0.195865 0.085661 0.090096 2.098490 0.074971 0.083902
4 -0.023429 -1.046709 0.607154 2.219594 0.381031 -2.047858 -0.725303
h i j
0 0.533436 -0.374395 0.633296
1 2.018426 -0.406507 -0.834638
2 -0.079477 0.506729 1.372538
3 -0.791867 0.220786 -1.275269
4 -0.584407 0.008437 -0.046714
だから、包括的な第五列に4をスライスする:
In [32]:
df.ix[:, 3:5]
Out[32]:
d e
0 -0.360570 0.317197
1 -0.653173 0.234772
2 0.167611 1.041648
3 0.090096 2.098490
4 2.219594 0.381031
だからあなたの場合は
df[(df.ix[:, 2:45]).values > 1.5).any(1)]
にすべきです仕事
インデックスが0
基づいており、オープン範囲が含まれているが、決算範囲はので、ここで第三の列が含まれていないと、私たちは、カラム46までのスライスが、これはスライスに含まれていません
iloc
と別の解決策、values
ができますomitedさ:
#if need from 3rd to 45th columns
print (df[((df.iloc[:, 2:45]) > 1.5).any(1)])
サンプル:
np.random.seed(1)
df = pd.DataFrame(np.random.randint(3, size=(5,10)), columns=list('abcdefghij'))
print (df)
a b c d e f g h i j
0 1 0 0 1 1 0 0 1 0 1
1 0 2 1 2 0 2 1 2 0 0
2 2 0 1 2 2 0 1 1 2 0
3 2 1 1 1 1 2 1 1 0 0
4 1 0 0 1 2 1 0 2 2 1
print (df[((df.iloc[:, 2:5]) > 1.5).any(1)])
a b c d e f g h i j
1 0 2 1 2 0 2 1 2 0 0
2 2 0 1 2 2 0 1 1 2 0
4 1 0 0 1 2 1 0 2 2 1