【问题标题】:Writing to a csv using pandas with filters使用带有过滤器的 pandas 写入 csv
【发布时间】:2017-02-11 20:28:26
【问题描述】:

我正在使用 pandas 库通过 Python 加载 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 中。

有人有什么想法吗?

【问题讨论】:

  • 您想让您的数据框过滤并同时应用您呈现的所有约束吗?
  • 是的。我有一个已加载的 .csv 数据集,但想根据某些标准过滤掉一些内容(因此,上面的示例)。我只是不知道如何将所有约束转换为 csv

标签: python csv pandas dataframe


【解决方案1】:

使用&amp;(按位与)组合布尔掩码:

mask = viewNum & starringActorNum & titleLen

选择dfmask 为True 的行:

df_filtered = df.loc[mask]

将 DataFrame 写入 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')

【讨论】:

    【解决方案2】:

    您可以使用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(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2013-08-01
      • 2014-12-14
      • 2020-03-16
      • 2020-06-25
      相关资源
      最近更新 更多