我有以下pandas dataframe:df = pd.DataFrame({"A": [1,2,3], "B": [-2,8,1], "C": [-451,23,326]})有没有一个函数可以返回一个元素的确切位置?假设该元素存在于表中并且没有重复。例如,如果element = 326,则返回row:2 col:2。非常感谢
df = pd.DataFrame({"A": [1,2,3], "B": [-2,8,1], "C": [-451,23,326]})
element = 326
row:2 col:2
yacmzcpb1#
可以使用stack:
stack
element = 326 s = df.stack().eq(element) out = s[s].index.tolist()
输出:[(2, 'C')]或numpy.where:
[(2, 'C')]
numpy.where
import numpy as np # as positions idx, col = np.where(df.eq(element)) # (array([2]), array([2])) # as labels df.index[idx], df.columns[col] # (Int64Index([2], dtype='int64'), Index(['C'], dtype='object'))
fzwojiic2#
您可以将np.where与df.values结合使用:
np.where
df.values
element = 326 indices = np.where(df.values == element) row_index, col_index = indices[0][0], indices[1][0] print("Row:", row_index) print("Column:", col_index)
输出:
Row: 2 Column: 2
2条答案
按热度按时间yacmzcpb1#
可以使用
stack
:输出:
[(2, 'C')]
或
numpy.where
:fzwojiic2#
您可以将
np.where
与df.values
结合使用:输出: