Ответ: Используйте строковый буфер (пакет io), чтобы загрузить объект, возвращенный .info (). После загрузки базовые операции с Python могут дать вам то, что вам нужно.
Код:
# Buffer functionality
import io
# Regular expression functionality
import re
buffer = io.StringIO()
df.info(buf=buffer)
# If you look at the output, the first 3 lines and the last 2 lines describe the output. There will be one trailing '' (hence -3).
# Shrink multiple spaces into one space, to be guaranteed that each split value is as such: split_arr[0] == column_name, split_arr[1] == non_null_count
tuple_array = [
(re.sub(' +', ' ', val).split(' ')[0], re.sub(' +', ' ', val).split(' ')[1])
for val in buffer.getvalue().split('\n')[3:-3]
]
Вывод: Вывод из приведенного выше примера DataFrame будет выглядеть следующим образом. Обратите внимание, что этот код может быть применен к любому вызову df.info()
.
tuple_array = [
('a', '2'),
...
('b', '4')
]
.&
оператор является ссылкой метода, т.е. он превращает обозначенный метод в закрытие так, чтобы он мог быть передан другим методам, которые хотят закрытие как аргумент.