我有一个数据帧,看起来像这样:
data = [[1, 10,100], [1.5, 15, 25], [7, 14, 70], [33,44,55]]
df = pd.DataFrame(data, columns = ['A', 'B','C'])
,并具有如下的视觉表达
A B C
1 10 100
1.5 15 25
7 14 70
33 44 55
我还有其他数据,也就是来自dataframe的随机行的子集,所以类似这样
set_of_rows = [[1,10,100], [33,44,55]]
我想要获取指示df
中set_of_rows
中每一行的位置的指示符。所以我需要一个函数来做这样的事情:
indeces = func(subset=set_of_rows, dataframe=df)
In [1]: print(indeces)
Out[1]: [0, 3]
什么函数可以做到这一点?Tnx
发布于 2021-08-03 11:25:22
尝试以下操作:
[i for i in df.index if df.loc[i].to_list() in set_of_rows]
#[0, 3]
如果你想把它作为一个函数:
def func(set_of_rows, df):
return [i for i in df.index if df.loc[i].to_list() in set_of_rows]
发布于 2021-08-03 12:13:46
您可以查看此线程;Python Pandas: Get index of rows which column matches certain value
据我所知,你的任务没有内在的Panda函数,所以迭代是唯一的方法。如果你关心如何处理这些错误,你可以在你的循环中添加一些条件来解决这个问题。
for i in df.index:
lst = df.loc[i].to_list()
if lst in set_of_rows:
return i
else:
return None
https://stackoverflow.com/questions/68635094
复制相似问题