2016-10-03 9 views
1

USASPENDING.govから公開されているcsvファイルを使用して作業しています。 Navyからデータを抽出することはできますが、適切な構文がわからず、Dollarsobligated = 0ですべてのレコードを除外する2番目のフィルタを追加してください。Python 3 Pandas Filter/<> 0を含む複数の列値で抽出0

コードは次のとおりです。

import pandas as pd 

df = pd.read_csv("2016_DOD_Contracts_Full_20160915.csv") 
df.columns = [c.replace(' ','_') for c in df.columns] 
new_df = df[(df.mod_agency == '1700: DEPT OF THE NAVY') & (df.dollarsobligated <> 0)] 

# Export result to CSV 
new_df.to_csv('example15.csv') 

私は<>が無効な構文であるというエラーを取得します。ウェブ上では '0と同じではない'という例はまだありません。

+1

'<>'でした "=!" '!='と同じです。 [Python3では、 '<>'が削除されました(https://docs.python.org/3.0/whatsnew/3.0.html#removed-syntax)。 – unutbu

+0

おかげで、ありがとう、unutbu :) –

答えて

2

<>!=boolean indexingに置き換えてください。in Python3, <> was removed、ありがとうございます。unutbuです。

また、あなたはstr.replaceを使用することができます。

df.columns = df.columns.str.replace(' ','_') 
new_df = df[(df.mod_agency == '1700: DEPT OF THE NAVY') & (df.Dollarsobligated != 0)] 

サンプル:

df = pd.DataFrame({'mod agency':['1700: DEPT OF THE NAVY', 
           '1700: DEPT OF THE NAVY', 
           '1800: DEPT OF THE NAVY'], 
        'Dollarsobligated':[1,0,0], 
        'C':[7,8,9]}) 

print (df) 
    C Dollarsobligated    mod agency 
0 7     1 1700: DEPT OF THE NAVY 
1 8     0 1700: DEPT OF THE NAVY 
2 9     0 1800: DEPT OF THE NAVY 

df.columns = df.columns.str.replace(' ','_') 
new_df = df[(df.mod_agency == '1700: DEPT OF THE NAVY') & (df.Dollarsobligated != 0)] 

print (new_df) 
    C Dollarsobligated    mod_agency 
0 7     1 1700: DEPT OF THE NAVY 
+0

それはチェックアウト、感謝jezrael :) –

+0

喜んで助けることができます! – jezrael

+0

私の答えが役に立ったら、[同意する](http://meta.stackexchange.com/a/5235/295067)を忘れないでください。ありがとう。 – jezrael

1

あなたが使用する必要がPython2ではなく、 "<>"

関連する問題