假设数据帧:
df=
col_1 col_2 col3
id1 val1 1
id2 val1 4
id3 val1 5
id4 val1 7
id1 val2 3
id2 val2 2
id3 val2 8
id4 val2 4
对于每一行,我需要添加一列
col3
从所有其他行
col2 == row[col2] AND col1 != row[col1]
所以我应该得到:
df=
col_1 col_2 col3 col4
id1 val1 1 16
id2 val1 4 13
id3 val1 5 12
id4 val1 7 10
id1 val2 3 14
id2 val2 2 15
id3 val2 8 9
id4 val2 4 13
我用apply之类的
def getVal(row, df):
return df[(df[col1] != row[col1]) & (df[col2] == row[col2])][col3].sum()
df[col4] = df.apply(lambda x: getVal(x, df), axis = 1)
但自从我
df
有
>1000000
划船,需要永远!!!!
有更好/更快的方法吗?
提前谢谢你