如何基于给定行的值保留列。

7
这是 df 数据框中数据的样子:
        A   B   C   D
0.js    2   1   1  -1
1.js    3  -5   1  -4
total   5  -4   2  -5

我会得到新的数据框 df1

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

基本上它应该像这样: df1 = df[df["total"] > 0] 但是它应该基于行进行过滤而不是列,我搞不清楚...
3个回答

4
使用 .where 将负值设置为 NaN,然后使用 dropna 并将 axis = 1
df.where(df.gt(0)).dropna(axis=1)

       A  C
total  5  2

4
您想使用.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

2
你可以使用 loc 进行布尔索引或重新索引:

您可以使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接