我有这个数据帧,只需要保留那些对2列具有倒数值的行(这里是numA和numB)。你知道吗
gpm = pd.DataFrame(data={
'id':[1,2,3,4,5,6,7,8,9],
'time':[150315,150315,150315,150315,150315,150315,150315,150315,150315],
'numA':['A','D','C','B','A','C','A','E','D'],
'numB':['B','C','B','A','B','D','B','A','A'],
'antA':['MSPDV','VIELU','RMPC1','MJCIH','PALT2','M2PV3','MACIF','MACIF','VIELU'],
'antB':['BPDV8','0GRI3','SSFDJ','SSFDJ','SSFDJ','CCPG1','0GRI3','SSFDJ','SSFDJ']
})
我只想要numA和numB列相互对应的行。也就是说,在(A,B)、(B,A)和(C,D)、(D,C)对出现的地方保留al线。你知道吗
目前,我的解决方案是列出所有唯一的标识符,并遍历每一行,查看实际的合作伙伴是否在合作伙伴列表中
非常慢。。。。(也许不正确!)你知道吗
## here's my code
parties = {}
nums = gpm['numA']+gpm['numB']
for i in nums.unique():
parties[i] = gpm['numB'][gpm['numA'] == i]
parties[i] = gpm['numA'][gpm['numB'] == i]
new_d = gpm.iloc[[0]]
for i in np.arange(1,gpm.shape[0]):
numa = gpm.iloc[i]['numA']
if gpm.iloc[i]['numB'] in parties[numa]:
new_d.append(gpm.iloc[[i]])
有没有聪明的程序员能帮你加快速度?实际要解析的文件是~15gbcsv。你知道吗
谢谢
在您的示例中,我假设id=3、8和9的行(C、B)、(E、A)和(D、A)是不需要的?如果是这样的话,这里有一个标准的选择方法,通过比较
numA
和numB
中的值来选择特定的可接受组合:(将结果赋给
new_d
)相关问题 更多 >
编程相关推荐