嗨,堆栈溢出的聪明人, 我正在寻找一种快速的方法来标记160000行数据帧中的所有行对,它们是彼此的负对应项
数据帧示例:
import pandas as pd
df = pd.DataFrame({'A': ['a','b','c','b','c','d','b'],
'B': ['x','y','x','y','x','z','y'],
'C': [-1.23, 1.2, 9.8, -1.2, -9.8, 1.23, -1.2]})
索引为1和3的行应标记为一对,索引为2和4的行也应标记为一对。我严格地寻找匹配对,因此,例如索引6不应该与1和3一起标记,并且任何索引都不能被多次标记
所需输出应为:
pairlist = [1,3,2,4]
我尝试过使用itertuples(),但速度很慢:
pairlist = []
for row in df.itertuples():
if row.C < 0 and row.Index not in pairlist:
found = df.loc[(df['A'] == row.A) & (df['B'] == row.B) & (df['C'] == -1*row.C)].index.tolist()
if len(found)>0:
for f in found:
if f not in pairlist:
pairlist.append(row.Index)
pairlist.append(f)
break
有没有办法以矢量化的方式来实现这一点
对于您的情况,让
transform
与filter
求和相关问题 更多 >
编程相关推荐