我有两个数据框。DF1:
Page LineNum Value
1 1 0.5
1 2 0.6
1 3 0.7
2 1 0.9
2 2 0.4
DF2:初始数据帧是前三列,我必须生成名为New_Value的第四列。
Page LineNum Word New_Value
1 1 g1 0.5
1 1 g2 0.5
1 1 g3 0.5
1 1 g4 0.5
1 2 g5 0.6
1 2 g6 0.6
1 3 g7 0.7
1 3 g8 0.7
...
我必须生成DF2的第四列,该列实际上是从DF1的唯一“ Page”和“ LineNum”值映射的。在DF2中,只是根据DF1中相对于“页面”和“ LineNum”的唯一值重复这些值。
我目前正在通过for循环执行此操作:
for index, row in DF1.iterrows():
DF2.ix[((DF2['Page'] == row['Page']) & (DF2['LineNum'] == row['LineNum'])),['New_Value']] = row['Value']
这绝对可以,但是两个数据帧都很大。所以我需要一些优化的功能,也许使用groupby和lambda,但无法设计出确切的功能。
请提出没有For循环的优化版本。如果还有其他需要我解释的内容,请发表评论。我正在使用Python3和pandas。
哔哔one
相关分类