繁体   English   中英

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

[英]Slice pandas rows between two numpy arrays

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

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

在此处输入图片说明

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

在此处输入图片说明

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

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

在此处输入图片说明

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

您可以传递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))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM