0
votes

Comment puis-je diviser un Dataframe par une liste de numéros de lignes pour chaque morceau?

J'ai un Dataframe que je veux couper en fonction des éléments d'une liste. Par exemple, j'ai un gamme_list [16, 14, 2 ...]

Je veux ensuite couper le Dataframe de sorte que le premier morceau soit de 16 rangées, la deuxième partie 14, la troisième partie 2 .. etc. Il pourrait être bénéfique de la mettre aussi dans une liste.


0 commentaires

3 Réponses :


2
votes

Utilisez numpy.split . Cela peut prendre une gamme d'indices pour trancher. Vous devez donc vous obliger à cumsum votre liste de gamme. xxx

exemple xxx

[retour]

retourne une liste avec 3 dataframes dans cet exemple, de formes (16, 2) , (14, 2) & (2, 2) xxx


5 commentaires

Serait-il possible de faire ce travail avec des valeurs de flotteur? J'ai des floats dans mon DF et obtenez le message d'erreur: TypeError: "Numpy.Float64" ne peut pas être interprété comme un entier


Vous ne pouvez pas trancher avec des flotteurs ... Par exemple, il n'y a pas d'index 2.5 d'une liste. Les indices doivent être entiers


Si vous voulez dire qu'il y a des dtypes float dans gamme_list (J'espère seulement x.0 valeurs), puis utilisez indices = np.cumsum (gamme_list, DTYPE = np.int32)


Merci c'est ce que je cherchais


En réalité, il donne toujours l'erreur TypeError: l'objet "Numpy.Float64" ne peut pas être interprété comme un entier



0
votes

Je ne suis pas sûr que si je vous comprends correctement. Si vous voulez juste diviser la liste, vous pouvez faire quelque chose comme ceci:

def split_list(l, range_list):
    i = 0
    for x in range_list:
        start = i
        end = start + x
        print(l[start:end])


0 commentaires

0
votes

Vous pouvez créer un tableau avec la somme cumulative des éléments de liste, ajouter un zéro initial, et une finale -1, puis le surmonté pour trancher le Dataframe initial: xxx


0 commentaires