我有一只大熊猫DataFrame
如下。
df = pandas.DataFrame(np.random.randn(5,5),columns=['1','2','3','4','5'])
1 2 3 4 5
0 0.877455 -1.215212 -0.453038 -1.825135 0.440646
1 1.640132 -0.031353 1.159319 -0.615796 0.763137
2 0.132355 -0.762932 -0.909496 -1.012265 -0.695623
3 -0.257547 -0.844019 0.143689 -2.079521 0.796985
4 2.536062 -0.730392 1.830385 0.694539 -0.654924
我需要获得以下三组的行和列索引。 (在我的原始数据集中没有负值)
例如,对于“值大于2.0”,它应返回[1,4]。我试过用它来得到一个布尔结果。
df.values > 2
答案 0 :(得分:2)
您可以在布尔结果上使用np.where
来提取索引:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(5,5),columns=['1','2','3','4','5'])
condition = df.values > 2
print np.column_stack(np.where(condition))
对于像这样的df
,
1 2 3 4 5
0 0.057347 0.722251 0.263292 -0.168865 -0.111831
1 -0.765375 1.040659 0.272883 -0.834273 -0.126997
2 -0.023589 0.046002 1.206445 0.381532 -1.219399
3 2.290187 2.362249 -0.748805 -1.217048 -0.973749
4 0.100084 0.671120 -0.211070 0.903264 -0.312815
输出:
[[3 0]
[3 1]]
或者在必要时获取行列索引对列表:
print map(list, np.column_stack(np.where(condition)))
输出:
[[3,0], [3,1]]