在两个Numpy数组之间切片熊猫行

时间:2018-07-26 15:29:24

标签: python pandas numpy

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

\[mailto:(.+)\]|<(.+@.+\..+)>

enter image description here

Hello my Email Address is <foo@hotmail.com> - Return foo@hotmail.com as Group1.
Hello my Email Address is [mailto: foo@hotmail.com] - Return foo@hotmail.com as Group2.

enter image description here

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

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

enter image description here

我不确定如何使该列表作为参数从df_info数据帧发送到np.r_。
谢谢。

1 个答案:

答案 0 :(得分:2)

您可以传递slice个对象:

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))]
相关问题