[英]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.