繁体   English   中英

如何根据另一个df中另一列的值访问df的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM