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
utilisation
df3 = pd.concat([df3, data], axis=0)
ou comme suggéré par @Wen utiliser
df3 = df3.append(data)
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
Si quelqu'un cherche à ajouter une nouvelle ligne au format dictionnaire, ci-dessous aidera.
In [6]: df Out[6]: Devices months 0 Powerbank Feb month In [7]:
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.