首页 > 解决方案 > 如何根据列值对 pandas DF 应用过滤器

问题描述

我有一个像下面这样的DF:

a b  c d  e
0 -1 2 -3 4
0 1 -2 3 -4
0 -1 -2 -3 4

我需要从每一行中只选择具有正值的列。

所以第一行应该返回

a c e
0 2 4

第二行

a b. d
0 1 3

第三

a e 
0 4

有人可以帮忙吗?

提前致谢

标签: pythonpython-3.xpandasdataframe

解决方案


如果结果需要是系列:

for _, row in df.iterrows():
    print(row[row >= 0])
    print()

印刷:

a    0
c    2
e    4
Name: 0, dtype: int64

a    0
b    1
d    3
Name: 1, dtype: int64

a    0
e    4
Name: 2, dtype: int64

如果数据帧:

for _, row in df.iterrows():
    print(row[row >= 0].to_frame().T)
    print()

印刷:

   a  c  e
0  0  2  4

   a  b  d
1  0  1  3

   a  e
2  0  4

推荐阅读