Python 根据条件删除行

Python 根据条件删除行,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个如下所示的数据帧: A B C D 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 我需要做的是求C和D的和,如果和大于10,则删除整行。然而,我不能通过他们的名字来访问这些列,我需要通过他们的位置来访问它们 我怎样才能在熊猫身上做呢 编辑: 另一个问题 A B C D 0 0 NaN 2 3 1 4 5 NaN NaN 2 8 9 10 11 如何保持列B、C和D中至

假设我有一个如下所示的数据帧:

   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
我需要做的是求C和D的和,如果和大于10,则删除整行。然而,我不能通过他们的名字来访问这些列,我需要通过他们的位置来访问它们

我怎样才能在熊猫身上做呢

编辑: 另一个问题

   A  B   C   D
0  0  NaN   2   3
1  4  5   NaN   NaN
2  8  9  10  11
如何保持列B、C和D中至少有两个值的行?

这是:

df[(df['C']+df['D']) <= 10]

df[(df['C']+df['D'])为什么不能按名称访问列?如果确实不能,可以这样做:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'A': [0, 4, 8], 'B': [1, 5, 9], 'C': [2, 6, 10], 'D': [3, 7, 11]})

In [3]: df
Out[3]:
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

In [4]: df.loc[df.iloc[:, 2:].sum(axis=1) <= 10]
Out[4]:
   A  B  C  D
0  0  1  2  3
[1]中的
:将熊猫作为pd导入
在[2]:df=pd.DataFrame({'A':[0,4,8],'B':[1,5,9],'C':[2,6,10],'D':[3,7,11]})
In[3]:df
出[3]:
A、B、C、D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

在[4]中:df.loc[df.iloc[:,2::].sum(axis=1)将至少有两个值的行保留在B、C和D列中。 你可以用这个

df=pd.DataFrame({'A':[0,4,8],'B':[1,np.nan,9],'C':[2,np.nan,np.nan],'D':[3,7,11])
mask=df.iloc[:,1:].isnull().sum(轴=1)<2
打印(df[遮罩])
输出

A B C D
0   0   1.0 2.0 3
2 8 9.0南11
对于第一个问题,您应该使用
df.fillna()
填充剩余的
nan
值, 移动之前,请使用前面答案中提供的解决方案

df=new_df.fillna(0)
打印(df)
输出

A B C D
0  0  1.0  2.0   3
2  8  9.0  0.0  11

现在您可以使用
df.loc[df.iloc[:,2::].sum(axis=1)回答您的问题了吗?列名非常复杂,充满空格,我很难修复它,非常好地工作,谢谢!