2017-02-07 88 views
3

我請求你的協助,使用兩個過濾器使用熊貓從csv拖放一行。熊貓有多列拖放行

import pandas as pd 

moving = pd.read_csv('C:/Users/Salesdata.csv') 
df = pd.DataFrame(moving) 

df = df[df['Last Name, First Name'] != 'Reid, Mark and Connie' & df['Actual Sale Date'] == 3/8/2015] 

df.to_csv('improvedcsv.csv', index=False) 

我的數據:

Last Name, First Name      Actual Sale Date 
Bugs, Rabbit and Bunny       12/11/2015 
Reid, Mark and Connie       3/8/2015 
Cortese, Robert and Laura      10/15/2014 
Reid, Mark and Connie       2/28/2015 

我需要刪除的裏德,馬克和康妮與2015年3月8日。當我運行上面的drop column snippet時,新的csv返回NO數據,僅返回列標題。如何解決這個問題,請幫助Pythoners。

+0

你想只做大熊貓嗎? –

回答

4

你需要把引號3/8/2015並更改邏輯有點過濾掉所有那些不等於你正在過濾的情況。你還需要在每個條件周圍使用括號。

df[~((df['Last Name, First Name'] == 'Reid, Mark and Connie') & 
    (df['Actual Sale Date'] == '3/8/2015'))] 
+0

謝謝,但裏德先生仍然出現了兩次。 –

+0

我做了一個小小的編輯。你想返回3行是否正確? –

+0

是的3/8/2015可以擺脫Reid。 –

2

您正在使用的邏輯存在問題。您正在說要查找沒有「Reid,Mark和Connie」的數據框情況,以及銷售日期爲3/8/2015的情況。這不是行。你想要的是如下因素:

df = df[~((df['Last Name, First Name'] == 'Reid, Mark and Connie') and (df['Actual Sale Date'] == 3/8/2015))] 
+0

謝謝,但在這種情況下,並不會工作,人們將不得不使用&否則它會拋出一個模棱兩可的錯誤。我用&編輯它,它仍然顯示所有四行數據。 –

2

在我的答案我不會使用pandas。我會做手工,我以爲你的輸入文件被稱爲input_file

data = (k.rstrip().split() for k in open("input_file", 'r')) 
final = [k for k in data if k[-1] != '3/8/2015'] 

for k in final: 
    print(k) 

輸出:

['Last', 'Name,', 'First', 'Name', 'Actual', 'Sale', 'Date'] 
['Bugs,', 'Rabbit', 'and', 'Bunny', '12/11/2015'] 
['Cortese,', 'Robert', 'and', 'Laura', '10/15/2014'] 
['Reid,', 'Mark', 'and', 'Connie', '2/28/2015']