Как преобразовать кортеж кортежей в pandas.DataFrame в Python?

Не обижайтесь, если вопросы слишком просты. Дайте мне знать, если вам нужна дополнительная информация.

Я ищу идею преобразования квадратного кортежа кортежей в pandas.DataFrame в чистом/эффективном/питоном режиме, т.е. из

s =((1,0,0,0,),(2,3,0,0,),(4,5,6,0,),(7,8,9,10,))

to pandas.DataFrame как

   1  2  3   4
1  1  0  0   0
2  2  3  0   0
3  4  5  6   0
4  7  8  9  10

Естественно, этот список может расти с большим количеством нулей, добавленных в верхний треугольник (если мы рассматриваем s как кортеж строк).

DataFrame(t) похоже, не работает.

Ответ 1

import pandas as pd

s = ((1,0,0,0,),(2,3,0,0,),(4,5,6,0,),(7,8,9,10,))

print pd.DataFrame(list(s))

#    0  1  2   3
# 0  1  0  0   0
# 1  2  3  0   0
# 2  4  5  6   0
# 3  7  8  9  10

print pd.DataFrame(list(s), columns=[1,2,3,4], index=[1,2,3,4])  

#    1  2  3   4
# 1  1  0  0   0
# 2  2  3  0   0
# 3  4  5  6   0
# 4  7  8  9  10

Ответ 2

Передайте список кортежей вместо кортежа кортежей:

In [13]: pd.DataFrame(list(s))
Out[13]: 
   0  1  2   3
0  1  0  0   0
1  2  3  0   0
2  4  5  6   0
3  7  8  9  10

pd.DataFrame(data) следует за разными путями кода, когда data является кортежем, а не списком.

Pandas разработчик Jeff Reback объясняет:

list-of-tuples - указанный тип, кортеж-кортеж не разрешен, так как я думаю, что он может обозначать вложенные типы, для которых требуется более синтаксический анализ.