【问题标题】:How to manipulate, filter columns with TextFileReader?如何使用 TextFileReader 操作、过滤列?
【发布时间】:2019-04-18 15:15:03
【问题描述】:

我有一个 8GB 的​​ CSV 文件,其中包含有关在法国创建的公司的信息。我设法使用以下命令在 python 中读取文件:

df = pd.read_csv('File', sep=";", encoding="latin", iterator = True, chunksize=1000)

我知道这段代码有效,因为当我编写下面的代码时,我得到一个带有 3 个随机行的类似数据框的输出:

df.get_chunk(3)

问题是,现在我希望能够操作数据;使用行的标准进行提取,就像我在通常的数据框中所做的那样:

df[(df.Country == "France")]

例如,在数据框中,上面的代码只会保留法国的行。但是当我尝试时:

df.read(df[(df.Country == "France")])

我得到:'TextFileReader' 对象没有属性'Country'

如何使用“==”或“>”或“

谢谢,

【问题讨论】:

    标签: python pandas dataframe stringio


    【解决方案1】:

    感谢您的回答,如果我的问题令人困惑,我们深表歉意。

    我刚刚找到了一个解决方案,即定义一个空数据框 (df_s) 并使用 for 循环使用标准(仅限法国公司)填充它,如下所示:

    df_s = []
    
    file='Path\file.csv'
    txt = pd.read_csv(file, sep=";", encoding="latin", iterator = True, chunksize=2000)
    
    for df in txt:
        df_s.append(df[df['Country' == "France"])
    
    df_f = pd.concat(df_s,ignore_index = True)
    

    【讨论】:

      【解决方案2】:

      很遗憾,我没听懂How can I rows columns using criteria like 的意思

      但如果我猜对了,这可能对你有用

       new_df = df[(df.Country == "France") or
                   (df.Country == "Germany") or 
                   (df.population >= 1000000]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 2012-07-25
        相关资源
        最近更新 更多