Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在大熊猫中发现重叠片段_Python_Numpy_Pandas_Data Analysis - Fatal编程技术网

Python 在大熊猫中发现重叠片段

Python 在大熊猫中发现重叠片段,python,numpy,pandas,data-analysis,Python,Numpy,Pandas,Data Analysis,我有两个数据帧A和B,列['start','end','value'],但行数不同。我想为A中的每一行设置值,如下所示: A.iloc(i) = B['value'][B['start'] < A[i,'start'] & B['end'] > A[i,'end']] A.iloc(i)=B['value'][B['start']A[i,'end'] 对于每个i,有可能有多行B满足此条件,在这种情况下,结果将是对应行的max或sum。如果没有满足A.iloc[i]的值,则

我有两个数据帧A和B,列
['start','end','value']
,但行数不同。我想为A中的每一行设置值,如下所示:

A.iloc(i) = B['value'][B['start'] < A[i,'start'] & B['end'] > A[i,'end']]
A.iloc(i)=B['value'][B['start']A[i,'end']
对于每个i,有可能有多行B满足此条件,在这种情况下,结果将是对应行的max或sum。如果没有满足
A.iloc[i]的值,则不应更新或将
设置为默认值0(任何一种方式都可以)

我很想找到最有效的方法。

将numpy作为np导入
import numpy as np
np.random.seed(1)
lenB = 10
lenA = 20
B_start = np.random.rand(lenB)
B_end   = B_start + np.random.rand(lenB)
B_value = np.random.randint(100, 200, lenB)

A_start = np.random.rand(lenA)
A_end   = A_start + np.random.rand(lenA)

#if you use dataframe
#B_start = B["start"].values
#B_end = ...

mask = (A_start[:, None ] > B_start) & (A_end[:, None] < B_end)
r, c = np.where(mask)
result = pd.Series(B_value[c]).groupby(r).max()
print result
np.随机种子(1) lenB=10 lenA=20 B_start=np.random.rand(lenB) B_end=B_start+np.random.rand(lenB) B_值=np.random.randint(100200,lenB) A_start=np.random.rand(lenA) A_end=A_start+np.random.rand(lenA) #如果您使用dataframe #B_start=B[“start”]。值 #结束=。。。 掩码=(A_开始[:,无]>B_开始)和(A_结束[:,无]
您想根据您的布尔条件设置数据框A的值列,对吗?@EdChum是的,但A和B的行数不相同。请使用新注释更新您的问题,因为它可以进一步澄清问题,还解释了在A或B中的行数较少的情况下,如何合并行。该解决方案非常优雅,但对于大型阵列来说,它占用了大量内存。