web-dev-qa-db-fra.com

Obtenir une erreur lors de l'ajout d'une nouvelle ligne à mon cadre de données existant dans les pandas

Salut, j'ai le dataframe ci-dessous.

df3=pd.DataFrame(columns=["Devices","months"])

J'obtiens la valeur de ligne d'une boucle Ligne, Print (data)

    Devices     months
1  Powerbank  Feb month

Lorsque j'ajoute cette ligne de données à mon df3, une erreur survient.

  df3.loc[len(df3)]=data

  ValueError: cannot set a row with mismatched columns
4
pyco

utilisation 

df3 = pd.concat([df3, data], axis=0)

ou comme suggéré par @Wen utiliser

df3 = df3.append(data)
8
muon

De https://pandas.pydata.org/pandas-docs/stable/merging.html :

Il convient toutefois de noter que concat (et donc append) crée une copie complète des données et que la réutilisation constante de cette fonction peut entraîner une baisse significative des performances. Si vous devez utiliser l'opération sur plusieurs jeux de données, utilisez une liste de compréhension.

Vous devriez utiliser loc, comme vous essayiez de le faire, et avec un dictionnaire où les clés sont les noms des colonnes et les valeurs sont les données de la ligne ajoutée.

import pandas as pd

df3 = pd.DataFrame(columns=["Devices","months"])
new_entry = {'Devices': 'device1', 'months': 'month1'}

df3.loc[len(df3)] = new_entry
5
JoaoMVR

Si quelqu'un cherche à ajouter une nouvelle ligne au format dictionnaire, ci-dessous aidera.

  • DataFrame existant
In [6]: df
Out[6]: 
     Devices     months
0  Powerbank  Feb month

In [7]:
  • L'extrait ci-dessous ajoute une autre ligne à DataFrame existant.
In [7]: dictionary_row = {"Devices":"Laptop","months":"Mar month"}

In [8]: df = df.append(dictionary_row, ignore_index=True)

In [9]: df
Out[9]: 
     Devices     months
0  Powerbank  Feb month
1     Laptop  Mar month

In [10]:

J'espère que cela pourra aider.

0
Akshay