This is a bit of a connundrum; I do not think I can provide an "answer", but I will try to provide some insights.
You have categorical data, with counts, following a binomial/multinomial distribution (how many times is Fx present) . So that limits the types of analysis/tests we could use. Your counts also are not very high (in fact many are 0's); that further limits things. In addition, that means that your tests will not have very high power (e.g. Group6 only has a single feature).
One could think of using multinomial regression, trying to regress the feature counts based on the groups as predictors, but you only have 1 predictor per cell (cells can belong to 1 and only 1 group), and you only have 1 observation of the multinomial distribution for each group... So I can not think of other ways than contingency tables? (maybe others can?)
The first, obvious (?) test is a Fisher exact test (17x9 contingency table) (just as the code snippet you have). If significant, this means that the counts of features are different between the groups (i.e. the counts do not all come from the same distribution(s)). But it will not tell you which counts are different between which group/feature. But if it is not significant, then the counts could all come from the same distribution(s), and there is nothing to find here.
Assuming the test will be significant (most likely it will be), you could now look at pairs of features, accross all groups; that will tell you which features are significantly different accross all groups (but still not which specific features are responsible for this significant result), or not (then these 2 features are "not that differently distributed"). That would require 136 tests (136 17x2 contingency tables). So you will a have a (non trivial) multiple comparison issue, and will need to use a multiple comparison correction (MCC) (Holm-Sidak?), which will further reduce your power.
You could also compare all pairs of groups accross all features, to see which groups are different (or not) accross all features. And that will not tell you which feature(s) is(are) responsible with this difference. That would require 36 tests (36 2x9 tables), facing again a MCC issue.
Last, you could of course run all possible 2x2 tests (testing all pairs of features, against all pairs of groups); that will (finally!) tell you which features behave differently between which groups. But... That would require 4896 tests; it would not only be tedious, but the MCC will elinate any power you may have had.
So you need to reduce the number of comparison. Is there a group which is a control group, or a baseline? Then you can limit comparison to this group (the 36 comparison become 8). Same for the features? Is there a special feature to compare the others to? That reduces the 136 tests to 16... Or do you have a particular hypothesis, which concerns only a few features accross a few groups (you collected the additional data, just because you might as well have, but your hypothesis is more focused -as opposed to being a "fishing expedition")? Any such reduction will greatly minimize the MCC issue, but depends on the specific of the experiment/research.
Based on the earlier "per feature", or "per group" tests, you may decide to combine the features/groups. If 2 features are not that different between groups, then you could aggregate them (combine their counts) (create feature ${F1}^{'}$ which is "Fx or Fy"). Same for groups (combine groups which do not show a difference). That would again minimize the MCC issue and increase your power (because of the higher counts), but may or not make sense based on your context.