Add new optional "separator" argument to json_normalize
 - [x] closes #14883
 - [x] tests added / passed (added test `test_shallow_nested_with_separator`)
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry (v0.20.0)

I appreciate all of these comments, and implemented them. And then I found my code doesn't even work. I am doing something clearly wrong here—I thought it was to simply substitute

```python
    meta_keys = [sep.join(val) for val in meta]
```

for

```python
    meta_keys = ['.'.join(val) for val in meta]
```

It's not. That doesn't work. Happy to take any suggestions. > And then I found my code doesn't even work.

I am not sure that is the reason, but in your last version, it is still `separator.join` instead of `sep.join` Thanks for the comments, which I've incorporated into a new pull request https://github.com/pandas-dev/pandas/pull/14950 (edit). However, despite y'all pointing out some issues with my code, I am baffled why the simple replace-`.`-with-`sep` doesn't work, happy to take suggestions.

(Feel free to close this pull request whenever it's appropriate to do so; it's supplanted by the new one.)