2017-02-11 58 views
0

我正在使用pandas庫使用Python加載csv文件。使用帶有過濾器的熊貓寫入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 

我想創建使用上述條件的新CSV文件,但我不確定該怎麼做以及如何將所有這些屬性合併爲一個csv。

任何人有任何想法?

+0

你想擁有所有你目前還正在並行應用的約束過濾出的數據幀? – languitar

+0

是的。我已經加載了一個.csv數據集,但想要根據某些標準(因此,上面的示例)篩選出一些內容。我只是不知道如何將我的所有約束轉換爲csv – natalien

回答

1

結合使用布爾口罩&(按位與):

mask = viewNum & starringActorNum & titleLen 

選擇的df其中mask是真行:

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(...)