Pretty-print Pandas DataFrames со сложными объектами внутри отдельных ячеек - PullRequest
0 голосов
/ 13 апреля 2020

Я вижу, что другие пользователи StackOverflow задавали подобные вопросы, но я задаю отдельный вопрос. В настоящее время я использую Pandas 0.23.3.

Я знаю, как встроить Python объект в одну ячейку в Pandas DataFrame. Если вы поместите элемент в список и назначите его в ячейку, Pandas не будет пытаться выделить его элементы и передать их. Я делаю это, и это работает. Что мне не нравится, так это то, как Pandas печатает такие DataFrames. Если вы помещаете списки или DataFrames в отдельные элементы большего DataFrame, результат печати получается грязным и трудным для чтения.

Я не нашел стандартного подхода Pandas для решения этой проблемы печати в документации поэтому я построил подкласс DataFrame для более красивой печати. Единственный метод в подклассе - __str__. Он ищет dtypes «объекта», и когда объекты обнаруживаются, я печатаю указанный тип c вместо попытки распечатать содержимое. Пример вывода из сеанса интерпретатора i Python:

In [3]: exp
Out[3]: 
   embed_dim  kernel_size  min_loss  best_epoch  elapsed_time            history    embedding best_weights
0          1            3 -0.717174          32    361.163418  <PrettyDataFrame>  <DataFrame>     <Series>
1          1            3 -0.717349          34    424.519406  <PrettyDataFrame>  <DataFrame>     <Series>
2          1            3 -0.717181          25    287.420010  <PrettyDataFrame>  <DataFrame>     <Series>
3          1            3 -0.717192          31    327.283332  <PrettyDataFrame>  <DataFrame>     <Series>

In [4]: exp.loc[2].history
Out[4]: 
   initial_epoch  final_epoch  min_loss  best_epoch best_weights       loss
0              0           19 -0.717125          19       <list>  <ndarray>
1             20           28 -0.717181          25       <list>  <ndarray>

Родительским объектом exp является PrettyDataFrame. Столбец истории в exp имеет больше PrettyDataFrames, вложенных в родительский элемент, и я тоже распечатаю один из них.

Я думаю, что это может быть хорошей функцией в Pandas, если она еще не существует. Согласно странице Pandas GitHub, я должен задавать вопросы здесь, прежде чем отправлять запрос функции.

Спасибо за ваши советы и комментарии!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...