Как преобразовать кортеж кортежей в 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 - указанный тип, кортеж-кортеж не разрешен, так как я думаю, что он может обозначать вложенные типы, для которых требуется более синтаксический анализ.