python - 用条件过滤pandas df

标签 python pandas dataframe filter

我有一个 pandas df:

df
                          DEtoDK         DKtoDE         
                            self other     self    other
2021-01-01 00:00:00+00:00    0.0   NaN  2230.08      NaN
2021-01-01 01:00:00+00:00    0.0   0.0  1887.72  2230.08
2021-01-01 02:00:00+00:00    0.0   0.0  1821.33  1887.72
2021-01-01 03:00:00+00:00    0.0   0.0  1743.20  1821.33
2021-01-01 04:00:00+00:00    0.0   0.0  1720.78  1743.20
...                          ...   ...      ...      ...
2021-05-31 19:00:00+00:00    0.0   0.0   782.88   892.16
2021-05-31 20:00:00+00:00    0.0   0.0   872.96   782.88
2021-05-31 21:00:00+00:00    0.0   0.0  1165.36   872.96
2021-05-31 22:00:00+00:00    0.0   0.0  1418.32  1165.36
2021-05-31 23:00:00+00:00    0.0   0.0  1393.28  1418.32
[3624 rows x 4 columns]

我想过滤这个 df,有一些条件,例如,如果 (DEtoDK, self)(DKtoDE, self) 值为 0。为此,我我正在使用以下内容:

df.loc[(df[('DEtoDK', 'self')].values == 0) | (df[('DKtoDE', 'self')].values == 0)]

这是可行的,但是当 df 没有任何 0 值时,我期望生成一个空数据帧,但是我收到了 KeyError。

df.loc[(df[('DEtoDK', 'self')].values == 'test') | (df[('DKtoDE', 'self')].values == 'test')]
KeyError: False

所以条件生成False,而不是空数组,因此pandas无法定位。我该如何解决这个问题?

最佳答案

不需要:

df.loc[(df[('DEtoDK', 'self')] == 0) | (df[('DKtoDE', 'self')] == 0)]

关于python - 用条件过滤pandas df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68469099/

相关文章:

javascript - 时区和 DateTimeField - Django

python - 3 列数据帧的三角形热图

python - 根据公共(public)字段将两行合并为一行

python - 我想找到一天中办公室最高峰的时间

python - 对python中的lambda表达式感到困惑

python - 在 Pandas (Python 3) 中用 0 替换空白

python - DataFrame:如何根据行的另一个单元格切换单元格值?

python - 如何将数组转换为数据框?

python - 如何将数据框列表转换为 python-pandas 中的面板?

python - numpy.dot 函数对 N 维数组到底有什么作用?