python pandas在 Dataframe 中搜索特定的数据块

mfpqipee  于 2022-11-27  发布在  Python
关注(0)|答案(2)|浏览(136)

你好,我想在一个有python和panda的 Dataframe 中寻找一个特定的数据块。让我们假设我有一个这样的 Dataframe :

A  B  C  D  E
1  3  5  7  9
5  6  7  8  9 
2  4  6  8  8
5  4  3  2  1

我想遍历 Dataframe ,查找特定的数据块,并返回该数据的位置。

7  8  9
6  8  8

如何在合理的运行时内实现这一点?
我的解决方案花费了很多时间,因为我在 Dataframe 上一遍又一遍地循环,我相信有一种更好的方法来解决这种问题。

xdyibdwo

xdyibdwo1#

假设此DataFrame和数组作为输入:

df = pd.DataFrame({'A': [1, 5, 2, 5], 'B': [3, 6, 4, 4], 'C': [5, 7, 6, 3], 'D': [7, 8, 8, 2], 'E': [9, 9, 8, 1

a = np.array([[7, 8, 9], [6, 8,  8]])

您可以使用numpysliding_window_view

from numpy.lib.stride_tricks import sliding_window_view as swv

idx, col = np.where((swv(df, a.shape) == a).all(axis=(-1, -2)))

out = list(zip(df.index[idx], df.columns[col]))

输出量:

[(1, 'C')]
dsekswqp

dsekswqp2#

让我们做signal

#b = np.array([[7,8,9],[6,8,8]])

from scipy import signal
c = signal.correlate(df.values, b, 'valid')
matched = np.where(c == signal.correlate(b,b,'valid'))
print(df.index[matched[0]],df.columns[matched[1]])
Int64Index([1], dtype='int64') Index(['C'], dtype='object')

相关问题