如何根据索引条件删除 Pandas 行 (True/False)
How to Drop Pandas Rows Based on Index Condition (True/False)
我需要简单地应用从一个数据帧“df1”的“NaN”条件构造的索引到另一个数据帧“df2”,以便索引中由“True”指示的所有行都从df1 和 df2 数据帧。
系列 rowwithnan 索引如下所示:
0 False
1 True
2 True
3 False
df1 看起来像这样:
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
1 AREC 35328.2 22 31 12 2020
2 AREC 37523.6 21 31 12 2020
3 AREC 36446.0 20 31 12 2020
df2 看起来像这样:
plant_name power_obs_kwh hour day month year
0 AREC 31548.4 23 31 12 2020
1 AREC 34732.2 22 31 12 2020
2 AREC 39023.7 21 31 12 2020
3 AREC 34946.0 20 31 12 2020
基于索引“rowswithnan”的“真”条件,我需要删除或删除 df1 和 df2 的行,以便它们对于 df2 看起来像这样:
plant_name power_obs_kwh hour day month year
0 AREC 31548.4 23 31 12 2020
3 AREC 34946.0 20 31 12 2020
和df1一样,是这样的:
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
3 AREC 36446.0 20 31 12 2020
我试过类似这样的错误:
df1.drop(rowswithnan,inplace=True,axis=1)
KeyError: '[False False False ... True True True] not found in axis'
谢谢!
布尔索引在这里更简单:
df1 = df1[~rowswithnan]
df2 = df2[~rowswithnan]
也可以使用您原来的 drop()
method, but drop()
想要的标签,所以我们最终还是使用布尔索引来获取 index
:
df1.drop(df1[rowswithnan].index, inplace=True)
df2.drop(df2[rowswithnan].index, inplace=True)
这就是您所需要的。您需要确保 df1
、df2
和 rowswithnan
的行数相同。
df1[~rowswithnan]
df2[~rowswithnan]
更多关于Boolean indexing
我需要简单地应用从一个数据帧“df1”的“NaN”条件构造的索引到另一个数据帧“df2”,以便索引中由“True”指示的所有行都从df1 和 df2 数据帧。
系列 rowwithnan 索引如下所示:
0 False
1 True
2 True
3 False
df1 看起来像这样:
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
1 AREC 35328.2 22 31 12 2020
2 AREC 37523.6 21 31 12 2020
3 AREC 36446.0 20 31 12 2020
df2 看起来像这样:
plant_name power_obs_kwh hour day month year
0 AREC 31548.4 23 31 12 2020
1 AREC 34732.2 22 31 12 2020
2 AREC 39023.7 21 31 12 2020
3 AREC 34946.0 20 31 12 2020
基于索引“rowswithnan”的“真”条件,我需要删除或删除 df1 和 df2 的行,以便它们对于 df2 看起来像这样:
plant_name power_obs_kwh hour day month year
0 AREC 31548.4 23 31 12 2020
3 AREC 34946.0 20 31 12 2020
和df1一样,是这样的:
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
3 AREC 36446.0 20 31 12 2020
我试过类似这样的错误:
df1.drop(rowswithnan,inplace=True,axis=1)
KeyError: '[False False False ... True True True] not found in axis'
谢谢!
布尔索引在这里更简单:
df1 = df1[~rowswithnan]
df2 = df2[~rowswithnan]
也可以使用您原来的 drop()
method, but drop()
想要的标签,所以我们最终还是使用布尔索引来获取 index
:
df1.drop(df1[rowswithnan].index, inplace=True)
df2.drop(df2[rowswithnan].index, inplace=True)
这就是您所需要的。您需要确保 df1
、df2
和 rowswithnan
的行数相同。
df1[~rowswithnan]
df2[~rowswithnan]
更多关于Boolean indexing