1
給定一個DataFrame
與列xk
和yk
,我們想找到DataFrame
的指標,其中,用於xk
和yk ==0
值。Python的大熊貓:獲取多個行的指數,這列匹配一定值
我有工作完美罰款只是一個列,但我不能讓它工作都
b = (df[df['xk'] ==0]).index.tolist()
我會怎麼做它xk
和yk
在同一時間。
給定一個DataFrame
與列xk
和yk
,我們想找到DataFrame
的指標,其中,用於xk
和yk ==0
值。Python的大熊貓:獲取多個行的指數,這列匹配一定值
我有工作完美罰款只是一個列,但我不能讓它工作都
b = (df[df['xk'] ==0]).index.tolist()
我會怎麼做它xk
和yk
在同一時間。
我想你可以檢查是否所有值都True
相比集['xk', 'yk']
通過all
:
b = df[(df[['xk', 'yk']] == 0).all(1)].index.tolist()
另一種解決方案是增加第二個條件與&
:
b = (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist())
樣品:
df = pd.DataFrame({'xk':[0,2,3],
'yk':[0,5,0],
'aa':[0,1,0]})
print (df)
aa xk yk
0 0 0 0
1 1 2 5
2 0 3 0
b = df[(df[['xk', 'yk']] == 0).all(1)].index.tolist()
print (b)
[0]
b1 = (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist())
print (b1)
[0]
第二種解決方案是更快:
#length of df = 3k
df = pd.concat([df]*1000).reset_index(drop=True)
In [294]: %timeit df[(df[['xk', 'yk']] == 0).all(1)].index.tolist()
1000 loops, best of 3: 1.21 ms per loop
In [295]: %timeit (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist())
1000 loops, best of 3: 828 µs per loop
謝謝,非常完美,約,如果我想返回特定行的只是指數,而不是返回所有索引列表的 – WGP
什麼我不知道,如果知道。如果使用'df = pd.DataFrame({'xk':[0,2,0], 'yk':[0,5,0], 'aa':[0,1,0]}) 打印(df)'然後你得到DataFrame - 'a =(df.ix [(df ['xk'] == 0)&(df ['yk'] == 0)])''。你需要返回第一指數或第二指數值按位置? – jezrael