To do conditional inference, you can look at subsets of your trace given the conditions you are interested in.
For example, if you want to know p(sunny | greeting = “Howdy, universe!”), first get all samples that correspond to the greeting “Howdy, universe”, then look at the distribution of values of “sunny” for those samples. Given your code, it should be something like:
greeting_mask = greeting_df.values == 'Howdy, universe'
sunny_given_greeting = sunny_df.loc[greeting_mask]
As a sanity check, these should all be “sunny”.