QDataFrame
State: closed

Not sure where that fits inside pandas. Happy to add tests to this but this works AFAICT. 

- [x] closes #10349
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [ ] whatsnew entry


Labels:
name: ExtensionArray
description: Extending pandas with custom dtypes or arrays.
name: Subclassing
description: Subclassing pandas objects

Comments:
Hello @wkerzendorf! Thanks for opening this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:

* In the file [`pandas/util/qdataframe.py`](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py):

> [Line 5:1](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L5): [E302](https://duckduckgo.com/?q=pep8%20E302) expected 2 blank lines, found 1
> [Line 25:1](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L25): [E302](https://duckduckgo.com/?q=pep8%20E302) expected 2 blank lines, found 1
> [Line 35:23](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L35): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ':'
> [Line 35:41](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L35): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 36:43](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L36): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 57:12](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L57): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 58:89](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L58): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (101 > 88 characters)
> [Line 81:89](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L81): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (110 > 88 characters)
> [Line 82:26](https://github.com/pandas-dev/pandas/blob/84d88caf3e0a3c8b5656f88495265573e43fa749/pandas/util/qdataframe.py#L82): [W292](https://duckduckgo.com/?q=pep8%20W292) no newline at end of file


I _really_ advise you guys to implement an ExtensionArray rather than a DataFrame/Series subclass.  See #45544
I'd be leery to even include this as a test in pandas. I think we don't really have a prescient of testing 3rd party package EA in our CI and I think better left tested by astropy.
I guess a 
```python
try:
    import astropy
except ImportError:
     raise ImportError('QDataFrame requires astropy') 
``` 

is not an acceptable solution to you? (I know you do this with pytables and HDF5). 

In any case, the community really wants such a feature - am happy to implement this and host this elsewhere. I would need some help with `ExtensionArray` if possible. 
That import pattern is typically used for internal IO support.

I would recommend this new ExtenstionArray living in astropy or an astropy project repo like other projects have done: https://pandas.pydata.org/docs/ecosystem.html?highlight=ecosystem#extension-data-types

You can reference https://pandas.pydata.org/docs/development/extending.html for a guide for developing the ExtensionArray  
closing. we would take an EA implementation as a test (but likey better off done as an external package).