【发布时间】:2021-08-29 05:52:12
【问题描述】:
我需要为这样的 DataFrame 删除一些行:
import pandas as pdimport numpy as np
input_ = pd.DataFrame()input_ ['ID'] = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]input_ ['ST'] = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]input_ ['V'] = [NaN, NaN, 1, 1, NaN, 1, Nan, 1, NaN, NaN, NaN, NaN]\
并以这样的 DataFrame 结束:
output_ ['ID'] = [ 2, 3, 4, 2, 3, 4, 2, 3, 4]output_ ['ST'] = [ 1, 1, 1, 2, 2, 2, 3, 3, 3]output_ ['V'] = [NaN, 1, 1, 1, Nan, 1, NaN, NaN, NaN]
在哪里,我删除了 ID == 1 的行,因为这些行有列 V == float(NaN) [np.isnan(V)] em> 表示 ST 列中的 ALL 值。在这两个条件下,我应该如何选择在 Pandas DataFrame 中删除哪些行?
【问题讨论】:
-
按照上面链接上的方法,您可以尝试以下方法:
input_.drop(input_[(input_['ID']==1) & (input_['V'].isna())].index) -
@RishabhKumar 你似乎误解了这个问题。 OP 想要删除
ID=1,因为所有带有ID的V都是nan。 -
@QuangHoang 好的,它给出了相同的输出,所以没有仔细阅读问题
-
我有点困惑,因为他说“有这两个条件”,而不同的数据集可能不会在 1 或 2 个条件下得到相同的结果。
标签: python pandas dataframe conditional-statements