2016-08-01 89 views
0

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

下面的列表:

 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是我的数据帧。

什么即时做错了?

谢谢你的帮助!

+2

你做这样的 - '''data_fakura = data_faktura [data_faktura.MW_BW = 'P'!]'''?您必须将返回的df分配回原来的df。 – TrigonaMinima

+0

如何做到这一点? – Damian

+2

用'''data_faktura = data_faktura [data_faktura.MW_BW!='P']'''替换你的代码行。 – TrigonaMinima

回答

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'] 
+0

不幸的是它没有工作......任何其他的想法? – Damian

+0

是的,请参阅编辑 - 尝试使用索引生成列表,其中值为'P',但不排除。 – jezrael

+0

即时通讯抱歉,但我不明白你的编辑!你能解释一下吗? – Damian