2017-02-11 18 views
0

私はPythonを使用してcsvファイルを読み込むために、pandasライブラリを使用しています。フィルタ付きパンダを使用したcsvへの書き込み

私は、その後のような、特定の値または文の欄をチェックしてい
import pandas as pd 
df = pd.read_csv("movies.csv") 

:私は上記の基準を使用して、新しいCSVファイルを作成したいが、それを行う方法がわからないよ

viewNum = df["views"] >= 1000 
starringActorNum = df["starring"] > 3 
df["title"] = df["title"].astype("str") 
titleLen = df["title"].str.len() <= 10 

これらの属性をすべて1つのcsvに結合する方法について説明します。

誰もが考えている?

+0

あなたは、データフレームを使用して、並列に適用されてそこに存在するすべての制約でフィルタリングしたいですか? – languitar

+0

はい。私はロードした.csvデータセットを持っていますが、特定の基準(したがって、上記の例)に基づいてコンテンツの一部を除外したいと考えています。私はすべての制約をCSVにどのように翻訳するのか分かりません – natalien

答えて

1

&(ビット単位-と)を使用して、ブールのマスクを組み合わせる:

mask = viewNum & starringActorNum & titleLen 

maskがTrue dfの行を選択します。

df_filtered = df.loc[mask] 

は、CSVへのデータフレームを書く:

df_filtered.to_csv('movies-filtered.csv') 

import pandas as pd 

df = pd.read_csv("movies.csv") 

viewNum = df["views"] >= 1000 
starringActorNum = df["starring"] > 3 
df["title"] = df["title"].astype("str") 
titleLen = df["title"].str.len() <= 10 

mask = viewNum & starringActorNum & titleLen 
df_filtered = df.loc[mask] 

df_filtered.to_csv('movies-filtered.csv') 
0

panda.DataFrame.query()インターフェイスを使用できます。これは、テキスト文字列の照会を可能にし、大きなデータセットに対しては非常に高速です。

このような何かが動作するはず

import pandas as pd 
df = pd.read_csv("movies.csv") 

# the len() method is not available to query, so pre-calculate 
title_len = df["title"].str.len() 

# build the data frame and send to csv file, title_len is a local variable 
df.query('views >= 1000 and starring > 3 and @title_len <= 10').to_csv(...) 
関連する問題