Как уменьшить столбцы в панелях данных - PullRequest
0 голосов
/ 05 февраля 2019

Вот как данные выглядят как в df dataframe:

        A   B   C   D
0.js    2   1   1  -1
1.js    3  -5   1  -4
total   5  -4   2  -5

И я бы получил новый dataframe df1:

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

Так что в принципе это должно выглядеть так:df1 = df[df["total"] > 0] но он должен фильтровать по строке, а не по столбцу, и я не могу понять ...

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Используйте .where для установки отрицательных значений на NaN, а затем dropna настройка axis = 1:

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

       A  C
total  5  2
0 голосов
/ 05 февраля 2019

Вы можете использовать loc с логическим индексированием или переиндексацией:

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

ИЛИ

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

Вывод:

       A  C
0.js   2  1
1.js   3  1
total  5  2
0 голосов
/ 05 февраля 2019

Вы хотите использовать .loc[:, column_mask] т.е.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...