2017-02-11 59 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(...)