尝试使用keyvalue删除行时没有错误

时间:2016-08-01 07:47:47

标签: python-3.x pandas

我想删除带有键值的数据框中的行。我有代码,但它不会工作。我没有得到错误或其他东西。它只是不删除行。我尝试了不同的东西但没有任何帮助愿你能给我一个答案。

以下是清单:

       FAK_ART    FAK_DAT  LEIST_DAT      KD_CRM MW_BW       EQ_NR MATERIAL  \
0         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507107  G230ETS   
1         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507107  G230ETS   
2         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507108  G230ETS   
3         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507108  G230ETS   
4         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507109  G230ETS   
5         ZPAF 2015-05-18 2015-05-31         TMD     P  1003507109  G230ETS   
6         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507110  G230ETS   
7         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507110  G230ETS   
8         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507111  G230ETS   
9         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507111  G230ETS   
10        ZPAF 2015-05-18 2015-05-31         TMD     E  1003507112  G230ETS   
11        ZPAF 2015-05-18 2015-05-31         TMD     B  1003507112  G230ETS   
12        ZPAF 2015-05-18 2015-05-31         TMD     E  1003507113  G230ETS   
13        ZPAF 2015-05-18 2015-05-31         TMD     P  1003507113  G230ETS   
14        ZPAF 2015-05-18 2015-05-31         TMD     E  1003507114  G230ETS   
15        ZPAF 2015-05-18 2015-05-31         TMD     B  1003507114  G230ETS  

从这个列表中我想在列MW_BW中删除带有键值的行' P'。

这就是我的代码:

data_faktura[data_faktura.MW_BW != 'P']

解释:data_faktura是我的数据帧。

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

看起来您的值P在字母之前或之后有一些空格:

请尝试strip空格:

data_faktura[data_faktura.MW_BW.str.strip() != 'P']

样品:

data_faktura = pd.DataFrame({'MW_BW':[' P','E','P'],
                             'B':[4,5,6]})

print (data_faktura)
   B MW_BW
0  4     P
1  5     E
2  6     P

print (data_faktura[data_faktura.MW_BW != 'P'])
   B MW_BW
0  4     P
1  5     E

print (data_faktura[data_faktura.MW_BW.str.strip() != 'P'])
   B MW_BW
1  5     E

编辑:

您还可以生成值列表,但不会忽略:

print (df)
   FAK_ART     FAK_DAT   LEIST_DAT KD_CRM MW_BW       EQ_NR MATERIAL
0     ZPAF  2015-05-18  2015-05-31    TMD     E  1003507107  G230ETS
1     ZPAF  2015-05-18  2015-05-31    TMD     B  1003507107  G230ETS
2     ZPAF  2015-05-18  2015-05-31    TMD     E  1003507108  G230ETS
3     ZPAF  2015-05-18  2015-05-31    TMD     B  1003507108  G230ETS
4     ZPAF  2015-05-18  2015-05-31    TMD     E  1003507109  G230ETS
5     ZPAF  2015-05-18  2015-05-31    TMD     P  1003507109  G230ETS
6     ZPAF  2015-05-18  2015-05-31    TMD     E  1003507110  G230ETS
7     ZPAF  2015-05-18  2015-05-31    TMD     B  1003507110  G230ETS
8     ZPAF  2015-05-18  2015-05-31    TMD     E  1003507111  G230ETS
9     ZPAF  2015-05-18  2015-05-31    TMD     B  1003507111  G230ETS
10    ZPAF  2015-05-18  2015-05-31    TMD     E  1003507112  G230ETS
11    ZPAF  2015-05-18  2015-05-31    TMD     B  1003507112  G230ETS
12    ZPAF  2015-05-18  2015-05-31    TMD     E  1003507113  G230ETS
13    ZPAF  2015-05-18  2015-05-31    TMD     P  1003507113  G230ETS
14    ZPAF  2015-05-18  2015-05-31    TMD     E  1003507114  G230ETS
15    ZPAF  2015-05-18  2015-05-31    TMD     B  1003507114  G230ETS

print (df.ix[[5,13],'MW_BW'].tolist())
['P', 'P']