J'ai essayé le code suivant:

import pandas as pd
list1 = {'Names':[1,2,3,4,5]}

df = pd.DataFrame(list1)
df_csv = pd.read_csv('try.csv')
df_csv['Names'] = list1
df_csv.to_csv('try.csv', index=False, mode= 'a')

L'erreur est la suivante:

"ValueError: Length of values does not match length of index"

Je comprends que la taille de la trame de données ne correspond pas, mais comment puis-je résoudre ce problème?

Voici donc ce que je veux dans le fichier try.csv après l'ajout: fichier try.csv

0
Janki Desai 15 avril 2018 à 20:15

3 réponses

Meilleure réponse

D'après votre code, le correct serait:

import pandas as pd
list1 = {'Names':[1,2,3,4,5]}

df = pd.DataFrame(list1)
df_csv = pd.read_csv('try.csv')
df_csv['Names'] = df.Names  # changed here
df_csv.to_csv('try.csv', index=False, mode= 'w')
0
João Paulo Casagrande Bertoldo 17 avril 2018 à 20:04

Vous pouvez essayer d'utiliser concat. Supposons que votre df_csv comporte plus de lignes comme ci-dessous, vous pouvez créer une nouvelle trame de données avec list1 et concaténer en tant que nouvelle colonne:

import pandas as pd
list1 = {'Names':[1,2,3,4,5]}

# creating dataframe with initial value instead of pd.read_csv
df_csv = pd.DataFrame({'col_1': [100,200,300,400,500,600,700]})
print(df_csv)

Résultat:

   col_1
0    100
1    200
2    300
3    400
4    500
5    600
6    700

Maintenant, concaténez à df_csv avec axis=1 en créant une nouvelle trame de données avec list1:

list1_df = pd.DataFrame(list1)
# concatenate df_csv and dataframe with list1_df
df_csv = pd.concat([df_csv,list1_df], axis=1)
print(df_csv)

Résultat:

   col_1  Names
0    100    1.0
1    200    2.0
2    300    3.0
3    400    4.0
4    500    5.0
5    600    NaN
6    700    NaN
0
student 15 avril 2018 à 17:39

Vous essayez d'affecter un dictionnaire ici, alors que votre ligne nécessite une liste de valeurs. Vous devriez essayer ceci:

import pandas as pd
list1 = {'Names':[1,2,3,4,5]}

df = pd.DataFrame(list1)
df_csv = pd.read_csv('try.csv')
df_csv['Names'] = list1['Names']
df_csv.to_csv('try.csv', index=False, mode= 'a')

De plus, il n'est pas clair pourquoi auriez-vous besoin d'un df DataFrame supplémentaire pour cela?

0
Olzhas Arystanov 15 avril 2018 à 17:19