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)回答您的问题了吗?列名非常复杂,充满空格,我很难修复它,非常好地工作,谢谢!