J'ai un grand dataframe contenant beaucoup de colonnes.
Pour chaque ligne/index dans le cadre de données, je fais des opérations, je lis des données auxiliaires, etc., et j'obtiens une nouvelle valeur. Existe-t-il un moyen d’ajouter cette nouvelle valeur dans une nouvelle colonne à la ligne/index correcte?
Je peux utiliser .assign pour ajouter une nouvelle colonne, mais comme je passe en boucle sur les lignes et que je ne génère que les données à ajouter pour une valeur à la fois (sa génération est assez complexe). Quand il est généré, j'aimerais l'ajouter immédiatement à la structure de données plutôt que d'attendre d'avoir généré la série complète.
Cela ne fonctionne pas et donne une erreur clé:
df['new_column_name'].iloc[this_row]=value
Dois-je d'abord initialiser la colonne ou autre chose?
Il y a deux étapes pour créer et remplir une nouvelle colonne en utilisant uniquement un numéro de ligne ... (dans cette approche iloc n'est pas utilisé)
Tout d’abord, obtenez la valeur index de la ligne en utilisant le numéro de la ligne
rowIndex = df.index[someRowNumber]
Ensuite, utilisez index de ligne avec la fonction loc pour référencer la ligne spécifique et ajouter la nouvelle colonne/valeur
df.loc[rowIndex, 'New Column Title'] = "some value"
Ces deux étapes peuvent être combinées en une seule ligne comme suit
df.loc[df.index[someRowNumber], 'New Column Title'] = "some value"
Si vous avez un dataframe comme
import pandas as pd
df = pd.DataFrame(data={'X': [1.5, 6.777, 2.444, pd.np.NaN], 'Y': [1.111, pd.np.NaN, 8.77, pd.np.NaN], 'Z': [5.0, 2.333, 10, 6.6666]})
Au lieu d'iloc, vous pouvez utiliser .loc
avec un index de ligne et un nom de colonne comme df.loc[row_indexer,column_indexer]=value
df.loc[[0,3],'Z'] = 3
Sortie:
X Y Z [.____] 0 1.500 1.111 3.000 1 6.777 NaN 2.333 2 2.444 8.770 10.000 3 NaN NaN 3.000