J'ai une colonne de données NP.Array que j'ajoute à la dernière colonne de My Pandas Dataframe. Cependant, j'ai besoin des données trisées par ordre croissant à l'intérieur de ce np.array. (Il n'est pas trié dans l'ordre croissant dans le Dataframe à partir duquel il est pris.)
Structure de données: P>
df = pd.read_csv('dfall.csv')
dfgfp = df.loc[:, 'GFP_spot_1_position':'GFP_spot_4_position']
df['gfp_spots_all'] = dfgfp.apply(lambda r: list(r),
axis=1).apply(np.array)
df.head()
4 Réponses :
Il semble que vous puissiez, voir le code ci-dessous
0 1 2 3 4 5 0 1.0 2.0 3.0 4.0 5.0 7.0 1 11.0 12.0 18.0 18.0 NaN NaN
Selon @g. Le commentaire d'Anderson, ajout d'un Je crois que cela fera ce dont vous avez besoin. P> p> trié () code> à votre expression de Lambda résoudra le problème. En fait, un peu de code dans votre exemple est redondant:
Il doit y avoir un moyen plus pythonique code> de le faire, mais voici une solution résolve ceci:
Ah, merci beaucoup! Ce n'était pas la réponse entière mais cela a aidé !!
# Here's what worked
df = pd.read_csv('dfall.csv')
dfgfp = df.loc[:, 'GFP_spot_1_position':'GFP_spot_4_position']
df['gfp_spots_all'] = dfgfp.apply(lambda r: list(r), axis=1).apply(np.array)
dfjust = pd.DataFrame([df.gfp_spots_all]).transpose()
## Loop on each row
for i in range(len(dfjust)):
for k in range(len(dfjust.columns)):
dfjust.iloc[i][k].sort()
dfjust.head()
[out:]
gfp_spots_all .
0 [3.4165, 19.63, nan, nan]
1 [6.7447, 18.044, nan, nan]
2 [5.088, 10.261, nan, nan]
3 [5.4081, 16.097, nan, nan]
4 [4.2675, nan, nan, nan]
5 rows à 1 columns
Avez-vous besoin que les colonnes elles-mêmes soient triées, ou uniquement les chiffres de la dernière colonne? Si c'est ce dernier, vous devriez être capable d'inclure
trié (liste (x)) code> dans votre lambdaAvez-vous effectué une recherche via les pandas ou la documentation numpy pour une méthode de tri? pandas.pydata.org/pandas-docs/stable ... docs.cipy.org/doc/numpy/reeference/index.html