[英]how to access rows of df depending on values of another column in another df
我有一个df2
和一个temp
df,它比 df2 有更多的行和更多的列(有些是常见的)。
df2=pd.DataFrame(data=(['False','False',0.9],['False','True', 0.1],['True','False',0.2],['True','True',0.8]), columns=['Winter?','Sprinkler?', 'Rain?'] )
temp=pd.DataFrame(list(itertools.product([False, True], repeat=len(['Winter?','Sprinkler?', 'Rain?']))),columns=['Winter?','Sprinkler?', 'Rain?'])
temp["p"] = np.nan
我想将 df2 中的 'p'col 值获取到 temp df 中,在两者之间具有兼容值的行中(请参见下面的屏幕截图。)
所以预计 output 将是以下df:
output_df = pd.DataFrame(list(itertools.product([False, True], repeat=len(['Winter?','Sprinkler?', 'Rain?']))),columns=['Winter?','Sprinkler?', 'Rain?'])
output_df["p"] = [0.9, 0.1, 0.9, 0.1, 0.2, 0.8, 0.2, 0.8]
使用merge
:
temp = temp.drop(columns='p').merge(df2, on=['Winter?', 'Rain?'], how='left')
print(temp)
# Output:
Winter? Sprinkler? Rain? p
0 False False False 0.9
1 False False True 0.1
2 False True False 0.9
3 False True True 0.1
4 True False False 0.2
5 True False True 0.8
6 True True False 0.2
7 True True True 0.8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.