7
votes

Comment conserver les colonnes en fonction des valeurs d'une ligne donnée

Voici comment les datalooks comme dans df dataframe:

        A     C
0.js    2     1
1.js    3     1
total   5     2

Et j'obtiendrais un nouveau dataframe df1 :

XXX

Donc, en gros, cela devrait ressembler à ceci: df1 = df [df ["total"]> 0] mais il devrait filtrer sur la ligne au lieu de la colonne et je ne peux pas le comprendre ..


0 commentaires

3 Réponses :


4
votes

Vous souhaitez utiliser .loc [:, column_mask] c'est-à-dire

In [11]: df.loc[:, df.sum() > 0]
Out[11]:
       A  C
total  5  2

# or

In [12]: df.loc[:, df.iloc[0] > 0]
Out[12]:
       A  C
total  5  2


0 commentaires

4
votes

Utilisez .where pour définir les valeurs négatives sur NaN , puis sur dropna paramètre axis = 1 :

df.where(df.gt(0)).dropna(axis=1)

       A  C
total  5  2


0 commentaires

2
votes

Vous pouvez utiliser, loc avec une indexation booléenne ou une réindexation:

       A  C
0.js   2  1
1.js   3  1
total  5  2

OU

df.reindex(df.columns[(df.loc['total'] > 0)], axis=1)

Sortie:

df.loc[:, df.columns[(df.loc['total'] > 0)]]


0 commentaires