1
votes

Pandas dataframe comment supprimer et renommer la colonne

Pour un bloc de données comme ci-dessous, j'essaie de 1) supprimer la colonne B, car elle n'est pas dans les valeurs des lignes de Marker , 2) puis renommer la colonne A, C, D en nouveaux noms ColA, ColB, ColC selon les valeurs sous la colonne New_Name . Quel pourrait être un moyen de faire cela? Dois-je mettre la colonne New_Name dans une liste et parcourir les noms de colonne Dataframe soemhow? Merci beaucoup pour votre aide.

          A     B     C      D        Marker   New_Name
         1.0   0.0   0.0    1.0        A          ColA
         1.0   0.0   0.0    0.0        C          ColC
         0.0   0.0   0.0    0.0        D          ColD


1 commentaires

avez-vous essayé quelque chose?


3 Réponses :


2
votes
s=df.reindex(columns=df.Marker).\
    rename(columns=dict(zip(df.Marker,df.New_Name))).\
     rename_axis(None,axis=1)
s
   ColA  ColC  ColD
0   1.0   0.0   1.0
1   1.0   0.0   0.0
2   0.0   0.0   0.0

3 commentaires

Mais après cela, comment se fait-il que les valeurs des colonnes Marqueurs aient changé?


@ user3735871 avis de modification, c'est-à-dire le nom de l'index


@ user3735871 `s = df.set_index ('Marker'). reindex (columns = df.Marker). \ rename (columns = dict (zip (df.Marker, df.New_Name))). \ rename_axis (None, axis = 1)



2
votes

Renommez les colonnes en utilisant un mappage et df.rename ():

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df.rename(columns={"A": "a", "B": "c"})

print(df):

   a    c
0  1  4
1  2  5
2  3  6


1 commentaires

comment faire cette carte dynamiquement en fonction des valeurs en lignes? Comme je ne connais pas les colonnes exactes de la carte = {"A": "a", "B": "c"}



1
votes

Peut garder les noms de marqueurs comme noms de lignes ainsi;

df2=df.drop(columns=['Marker','B']).set_index('New_Name').T.rename_axis('Marker',axis=1)
df2


0 commentaires