gpt4 book ai didi

python - pandas DataFrame 按行和列过滤

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:48 26 4
gpt4 key购买 nike

我有一个看起来像这样的 python pandas DataFrame:

                   A      B      C    ...     ZZ
2008-01-01 00 NaN NaN NaN ... 1
2008-01-02 00 NaN NaN NaN ... NaN
2008-01-03 00 NaN NaN 1 ... NaN
... ... ... ... ... ...
2012-12-31 00 NaN 1 NaN ... NaN

而且我不知道如何获取 DataFrame 的一个子集,其中有一个或多个“1”,因此最终的 df 应该是这样的:

                   B      C    ...     ZZ
2008-01-01 00 NaN NaN ... 1
2008-01-03 00 NaN 1 ... NaN
... ... ... ... ...
2012-12-31 00 1 NaN ... NaN

这就是删除所有不包含 1 的行和列。

我试试这个似乎删除了没有 1 的行:

df_filtered = df[df.sum(1)>0]

并尝试删除列:

df_filtered = df_filtered[df.sum(0)>0]

但是在第二行之后出现这个错误:

IndexingError('Unalignable boolean Series key provided')

最佳答案

loc 做:

In [90]: df
Out[90]:
0 1 2 3 4 5
0 1 NaN NaN 1 1 NaN
1 NaN NaN NaN NaN NaN NaN
2 1 1 NaN NaN 1 NaN
3 1 NaN 1 1 NaN NaN
4 NaN NaN NaN NaN NaN NaN

In [91]: df.loc[df.sum(1) > 0, df.sum(0) > 0]
Out[91]:
0 1 2 3 4
0 1 NaN NaN 1 1
2 1 1 NaN NaN 1
3 1 NaN 1 1 NaN

这就是您收到该错误的原因:

假设我有以下框架,df,(类似于您的框架):

In [112]: df
Out[112]:
a b c d e
0 0 1 1 NaN 1
1 NaN NaN NaN NaN NaN
2 0 0 0 NaN 0
3 0 0 1 NaN 1
4 1 1 1 NaN 1
5 0 0 0 NaN 0
6 1 0 1 NaN 0

当我沿着行和阈值求和为 0 时,我得到:

In [113]: row_sum = df.sum()

In [114]: row_sum > 0
Out[114]:
a True
b True
c True
d False
e True
dtype: bool

因为row_sumindexdfcolumns,所以在这没有意义尝试使用 row_sum > 0 的值对 df 的行进行花式索引,因为它们的行索引未对齐并且它们无法对齐。

关于python - pandas DataFrame 按行和列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212251/

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