J'ai deux dataframes, comme ci-dessous   et l'exigence est de remplir DF_UPUT en fonction de la valeur dans df_input  p>   Donc, fondamentalement, la valeur de la colonne du df_input sera la valeur de la cellule dans df_output lors de correspondances et basé df_input.id == df_outuput.id  p>   J'essayais comme ci-dessous  P> for i in range(1,number_of_columnswithPass):
      df_output['Pass_'+i] = function1(df_input,i)
3 Réponses :
 Je suppose qu'au début, vous avez  df_output  em> avec les noms de colonne appropriés
(comme ils devraient être après le remplissage).   Pour faire votre tâche:  P>     Définissez la fonction suivante générant une ligne OUTPU, basée sur une ligne source:  p>
 importer re  code> (sera utilisé dans un instant).  P>  li>
out = pd.Series(vals, index=ind).rename(row.name)
return out.groupby(lambda key: key).apply(lambda lst: (', '.join(sorted(lst))))
Il existe d'autres colonnes dans les deux dataframes, également df_input.id == df_output.id doit être assortie
J'ai corrigé ma solution pour garder l'index source. Il y a une autre colonne à omettre, veuillez spécifier lequel (comment dire des colonnes à traiter à partir de colonnes à omettre).
Les colonnes qui commencent par la passe doivent être passées sous cette logique, d'autres peuvent rester telles qu'elles sont et les autres colonnes que j'ai pris soin de toute façon
Obtenir cette erreur en effectuant votre solution "AttributeError: (" peut seulement utiliser l'accessor .str avec des valeurs de chaîne (c'est-à-dire une "chaîne", "chaîne", "unicode" ou "mixte") "," eu lieu à index pass_dnw '
Bien sûr, il peut être maximum de 40 colonnes et peut être de n'importe quel mot. Comme Pass_Does, Pass_Dnw, Pass_sig: 2. J'ai aussi édité la question principale
Merci, obtenez une erreur comme - ValueError: impossible de réindex à partir d'un axe en double
Ce message d'erreur indique que les noms de colum sont dupliqués. Regardez les listes de colonnes dans la table "préliminaire" et dans sortie_df i>. Peut-être que vos données d'entrée contiennent le même numéro b> dans deux Sondage _... i> colonnes? Ensuite, le Dataframe préliminaire contiendrait une répétition. Votre échantillon d'entrée n'inclut pas un tel cas, je ne l'ai donc pas considéré.
J'ai vérifié et j'ai fait une boucle pour chaque ligne, et je n'ai pas pu trouver une valeur dupliquée dans une rangée, je reçois toujours la même erreur
Remplacez la dernière ligne lorsque j'ai écrit dans la modification. Puis exécutez mon code sur des parties de votre fichier d'entrée. Essayez de localiser la ligne qui provoque l'erreur.
Créez deux dataframes à partir de DF_Input et de sortie, fusionnez-les et pivotez pour obtenir votre Dataframe final:
#create first dataframe
    res1 = pd.wide_to_long(df,
                       stubnames='Pass',
                       i='id',
                       j='letters',
                       sep='_',
                       suffix='[A-Z]').reset_index()
                          )
res1
     id letters Pass
0   110101  X   1
1   110102  X   2
2   110101  Y   2
3   110102  Y   1
4   110101  Z   4
5   110102  Z   3
#create second dataframe
res2 = (df1
        .melt('id')
        .drop('value', axis=1)
        .assign(numbers=lambda x: x.variable.str.split('_').str.get(-1))
        .astype( {'numbers': int})
       )
res2
      id    variable    numbers
0   110101  Pass_01       1
1   110102  Pass_01       1
2   110101  Pass_02       2
3   110102  Pass_02       2
4   110101  Pass_03       3
5   110102  Pass_03       3
#merge the two dataframes, and pivot to get ur final output
outcome = (res1
           .merge(res2,
                  left_on=['id','Pass'],
                  right_on=['id','numbers'],
                  how='right')
           .pivot(columns='variable',values='letters',index='id')
           .bfill()
           .reset_index()
           .rename_axis(columns=None)
          )
outcome
      id    Pass_01 Pass_02 Pass_03
0   110101     X       Y       Z
1   110102     Y       X       Z
                                 Vous pouvez le faire avec   Stack  code> ,   instable  code>  et certains   set_index  code>  et   réinitialiser_index  code>  pour jouer avec quelles colonnes sont dans la logique. 
df2 = (df1.set_index('id') #set index any columns not in the logic of pass
          # remove the prefix Pass_
          .rename(columns=lambda col: col.replace('Pass_', ''))
          # stack the datafrae to make it a serie and sort the passes
          .stack().sort_values()
          # next two method exchange the old pass index to the new pass index
          .reset_index(level=1, name='Pass')
          .set_index('Pass', append=True)['level_1']
          # from the serie to the dataframe shape
          .unstack()
          # rename the columns with the prefix pass_
          .rename(columns=lambda col: f'Pass_{col:02}')
          # rename axis to none
          .rename_axis(None, axis=1)
          # but back the id as a column
          .reset_index())
print (df2)
       id Pass_01 Pass_02 Pass_03
0  110101       X       Y       Z
1  110102       Y       X       Z
                                
Est-il prudent de supposer que les données initiales dans df_output sont des valeurs nulles?
Oui c'est le cas . null ou nan
Mais sa colonne d'identification est remplie