2017-02-28 45 views
1

文件:CSV列沒有過濾,沒有錯誤

SYMBOL,DATE1,PREV_CLOSE,CLOSE_PRICE,DELIV_QTY,DELIV_PER,P/L_PER 
20MICRONS,23-Feb-2017,36.55,35.9,41182,76.49,-1.77838577291 
3IINFOTECH,23-Feb-2017,5.3,5.25,1240915,60.45,-0.943396226415 
3MINDIA,23-Feb-2017,11135.85,11038.15,360,69.50,-0.877346587822 
63MOONS,23-Feb-2017,80.3,80.6,26958,53.38,0.373599003736 
63MOONS,23-Feb-2017,80.3,80.6,26958,53.38,0.373599003736 
8KMILES,23-Feb-2017,588.75,586.75,10141,46.50,-0.339702760085 
A2ZINFRA,23-Feb-2017,40.95,40.55,116344,48.67,-0.97680097680 

按我的代碼,並輸入文件時,它應該輸出具有柱DELIV_QTY所有行是按照條件,但是當我運行的代碼,不存在錯誤,文件沒有變化。

請更正我的代碼。

import pandas as pd 
df = pd.read csv('bhavcopy.csir', index_col = False) 
df[df.DELIV QTY >= 10000 ] 
df.to csv('bhavcopy.csir', index = False) 
+0

小編建議 - [不要發佈的代碼圖像(或鏈接到他們)](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question) – jezrael

回答

1

您需要分配輸出到df,因爲boolean indexing不起作用就地:

df = df[df.DELIV_QTY >= 10000] 
print (df) 
     SYMBOL  DATE1 PREV_CLOSE CLOSE_PRICE DELIV_QTY DELIV_PER \ 
0 20MICRONS 23-Feb-2017  36.55  35.90  41182  76.49 
1 3IINFOTECH 23-Feb-2017  5.30   5.25 1240915  60.45 
3  63MOONS 23-Feb-2017  80.30  80.60  26958  53.38 
4  63MOONS 23-Feb-2017  80.30  80.60  26958  53.38 
5  8KMILES 23-Feb-2017  588.75  586.75  10141  46.50 
6 A2ZINFRA 23-Feb-2017  40.95  40.55  116344  48.67 

    P/L_PER 
0 -1.778386 
1 -0.943396 
3 0.373599 
4 0.373599 
5 -0.339703 
6 -0.976801 

query另一種解決方案:

df = df.query('DELIV_QTY >= 10000') 
print (df) 
     SYMBOL  DATE1 PREV_CLOSE CLOSE_PRICE DELIV_QTY DELIV_PER \ 
0 20MICRONS 23-Feb-2017  36.55  35.90  41182  76.49 
1 3IINFOTECH 23-Feb-2017  5.30   5.25 1240915  60.45 
3  63MOONS 23-Feb-2017  80.30  80.60  26958  53.38 
4  63MOONS 23-Feb-2017  80.30  80.60  26958  53.38 
5  8KMILES 23-Feb-2017  588.75  586.75  10141  46.50 
6 A2ZINFRA 23-Feb-2017  40.95  40.55  116344  48.67 

    P/L_PER 
0 -1.778386 
1 -0.943396 
3 0.373599 
4 0.373599 
5 -0.339703 
6 -0.976801 
+0

嗨jezrael,比k你的快速評論和它的工作。 –

+0

P/L_PER的工作原理是相同的,但是當我過濾另一列時,如果我搜索字符串就可以工作,則不能工作。例如,「DELIV_PER」列中的「100.00」。我把你的命令> = 99,然後沒有輸出,但是當我搜索'DELIV_PER == 100.00',那麼就有結果。必須做什麼。可能有數據類型相關的問題。如何將所有列值更改爲float。 –

+0

你可以通過df ['DELIV_PER'] = df ['DELIV_PER']。astype(float)'進行轉換,如果不工作,使用'df ['DELIV_PER'] = pd.to_numeric(df ['DELIV_PER'],錯誤='coerce')'將非數值轉換爲'NaN' – jezrael