gpt4 book ai didi

python - 在 Python 中屏蔽 pandas 数据框上的多列

转载 作者:太空狗 更新时间:2023-10-30 02:04:06 26 4
gpt4 key购买 nike

我希望在 Python 中对 Pandas 数据集的每一列(分别针对其属性)应用乘法掩码。

在下一步中,我想在数据框中找到符合所有条件的 (a) 行。

因此我有:

df
Out[27]:
DE FL GA IA ID
0 0 1 0 0 0
1 1 0 1 0 1
2 0 0 1 0 0
3 0 1 0 0 0
4 0 0 0 0 0

mask_list = []
for i in range(0,5):

if i % 2==0:
mask_list.append(df[[i]]>0)
else:
mask_list.append(df[[i]]<1)

concat_frame = pa.DataFrame()
for mask in mask_list:
concat_frame =pa.concat((concat_frame, mask), axis=1)

concat_frame
Out[48]:
DE FL GA IA ID
0 False False False True False
1 True True True True True
2 False True True True False
3 False False False True False
4 False True False True False

[5 rows x 5 columns]

预期结果:

Out[60]:
DE FL GA IA ID
1 1 0 1 0 1

如何在 df 上应用 concat_mask,以便我选择行,其中所有 bool 条件都匹配(为真) ?

最佳答案

您可以使用 Pandas all 方法和 bool 逻辑。作为EdChum commented ,我对你的确切例子还是有点不清楚,但一个类似的例子是:

In [1]: df = DataFrame([[1,2],[-3,5]], index=[0,1], columns=['a','b'])
In [2]: df
Out [2]:
a b
0 1 2
1 -3 5

In [3]: msk = (df>1) & (df<5)
In [4]: msk
Out [4]:
a b
0 False True
1 False False

In [5]: msk.all(axis=1)
Out [5]:
0 False
1 False
dtype: bool

如果你想通过掩码索引原始数据帧,你可以这样做:

In [6]: df[msk]
Out [6]:
a b
0 NaN 2
1 NaN NaN

或者如您最初指出的那样,所有行都为真的行:

In [7]: idx = msk.all(axis=1)
In [8]: df[idx]
Out [8]:
Empty DataFrame
Columns: [a,b]
Index: []

或者如果一行为真

In [9]: idx[0] = True
In [10]: df[idx]
Out [10]:
a b
0 1 2

对于从评论中澄清后的原始问题,我们希望对不同的列使用不同的过滤条件:

In [10]: msk1 = df[['a']] < 0
In [11]: msk2 = df[['b']] > 3
In [12]: msk = concat((msk1, msk2), axis=1)
In [12]: slct = msk.all(axis=1)
In [13]: df.ix[slct]
Out [13]:
a b
1 -3 5

关于python - 在 Python 中屏蔽 pandas 数据框上的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24328650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com