我有一个像这样的dataFrame: enter image description here
我想知道如果任何特定列包含特定值怎么删除整行?
例如,如果列Q1,Q2或Q3包含零,则删除整行。但是,如果列Q4或Q5包含零,请不要删除该行。
答案 0 :(得分:1)
df.loc[~df[['Q1', 'Q2', 'Q3']].eq(0).any(1)]
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randn(5,5), columns=['Q1', 'Q2', 'Q3', 'Q4', 'Q5'])
df.loc[1,'Q1'] = 0
df.loc[4, 'Q2'] = 0
df.loc[3, 'Q5'] = 0
[出]
Q1 Q2 Q3 Q4 Q5
0 1.764052 0.400157 0.978738 2.240893 1.867558
1 0.000000 0.950088 -0.151357 -0.103219 0.410599
2 0.144044 1.454274 0.761038 0.121675 0.443863
3 0.333674 1.494079 -0.205158 0.313068 0.000000
4 -2.552990 0.000000 0.864436 -0.742165 2.269755
# Should drop rows 1 and 4, but leave row 3
df.loc[~df[['Q1', 'Q2', 'Q3']].eq(0).any(1)]
[出]
Q1 Q2 Q3 Q4 Q5
0 1.764052 0.400157 0.978738 2.240893 1.867558
2 0.144044 1.454274 0.761038 0.121675 0.443863
3 0.333674 1.494079 -0.205158 0.313068 0.000000
答案 1 :(得分:0)
我们可以将其视为条件过滤问题。我们只想保留第Q1,Q2和Q3列不为零的行:
df_new = df[(df["Q1"] != 0) & (df["Q2"] != 0) & (df["Q3"] != 0)]
此df_new
现在仅包含所需的行。