这是我的第一个数据帧,其中包括玩家点数
这是我的第二个数据帧,我希望我的总和是根据我在这一行的玩家来计算的
我想要的输出是这样的
因此,我有一个解决方案,但我想要一个有效的方法,使它在pyspark
## Function, will return corrosponsing point for Player from df1
def replacepoints(x):
return df1['points'].where(df1['Playername']==x).sum()
## Iterating through All Names and replacing with their points so that we can sum whole single row to get total points
df3 = df2[['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11']].copy()
# df3
length = len(df3)
for i in range(length):
j_len = len(df3.iloc[i])
for j in range(j_len):
name = df3.iloc[i][j]
df3.iloc[i][j] = replacepoints(name)
# print(name)
# print(replacepoints(name))
## now df3 contains points only
# df3
## storing the sum in points
points = df3.sum(axis=1)
points
# Add points to df2 ponts
df2['points'] = points
代码
这样可以避免嵌套循环,我们还可以创建副本,使其不会更改原始数据集
注意:它使用相同的方法,将玩家名称替换为点数,然后进行行相加
我就是这样做的
相关问题 更多 >
编程相关推荐