在两个numpy数组之间切片行

2024-06-02 08:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望根据几个熊猫系列中的值对熊猫数据帧进行切片。
所以我需要熊猫系列值之间的行。
例如:

df = pd.DataFrame(np.random.rand(10,5), columns = list('abcde')) 

enter image description here

df_info = pd.DataFrame(data= {'beginRows': [2, 7], 'endRows': [4, 9]}

enter image description here

我需要df中位于beginRows和endRows值之间的行,在df\u info的每一行中。
从技术上讲,我可以这样做:

df_result = df[df.index.isin(np.r_[2:4+1,7:9+1])]

enter image description here

我不知道如何使该列表作为参数从df\u info数据帧发送到np.r\n。
非常感谢。你知道吗


Tags: columns数据infodataframedfdatanp切片
1条回答
网友
1楼 · 发布于 2024-06-02 08:32:06

您可以传递^{}对象:

slice1 = slice(2, 4+1)
slice2 = slice(7, 9+1)

df_result = df[df.index.isin(np.r_[slice1, slice2])]

根据您的输入df_info

s1, s2 = [slice(i, j+1) for i, j in df_info.values]

df_result = df[df.index.isin(np.r_[s1, s2])]

或者,对于任意数量的片,可以将tuple传递给np.r_.__getitem__

slices = tuple(slice(i, j+1) for i, j in df_info.values)

df_result = df[df.index.isin(np.r_.__getitem__(slices))]

相关问题 更多 >