web-dev-qa-db-fra.com

Comment convertir un tuple de tuples en pandas.DataFrame en Python?

Aucune infraction, si les questions sont trop basiques. Faites-moi savoir si vous avez besoin de plus d'informations.

Je cherche une idée pour convertir un Tuple carré de tuples en pandas.DataFrame d'une manière propre/efficace/Pythonique, c'est-à-dire de

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

à pandas.DataFrame comme

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

Naturellement, cette liste peut s'allonger avec plus de zéros ajoutés dans le triangle supérieur (si nous considérons s comme un tuple de lignes).

DataFrame(t) semble échouer.

17
Oleg Melnikov
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
31
furas

Passez une liste de tuples au lieu d'un Tuple de tuples:

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) suit des chemins de code différents lorsque data est un tuple par opposition à une liste.

Développeur Pandas Jeff Reback explique :

list-of-tuples est le type spécifié, Tuple-of-Tuple n'est pas autorisé car je pense qu'il peut signifier des types imbriqués qui nécessiteraient plus d'analyse.

6
unutbu