【问题标题】:Python script to skip specific column in CSV files用于跳过 CSV 文件中特定列的 Python 脚本
【发布时间】:2020-10-06 03:06:29
【问题描述】:

我有一个 Python 代码,它根据特定列过滤数据并创建多个 CSV 文件。

这是我的主要 csv 文件:

Name,    City,      Email
john     cty_1      a@g.com
jack     cty_1      b@g.com
...
Ross     cty_2      c@g.com
Rachel   cty_2      d@g.com
...

我的 python 逻辑目前为单独的城市创建单独的 csv。现有的python逻辑是:

from itertools import groupby
import csv

with open('filtered_final.csv') as csv_file:
    reader = csv.reader(csv_file)
    next(reader) #skip header
    
    #Group by column (city)
    lst = sorted(reader, key=lambda x : x[1])
    groups = groupby(lst, key=lambda x : x[1])

    #Write file for each city
    for k,g in groups:
        filename = k[21:] + '.csv'
        with open(filename, 'w', newline='') as fout:
            csv_output = csv.writer(fout)

            csv_output.writerow(["Name","City","Email"])  #header
            for line in g:
                csv_output.writerow(line)

现在,我想删除每个新 CSV 文件上的“城市”列。

【问题讨论】:

    标签: python python-3.x pandas csv


    【解决方案1】:

    如果你的数据小到可以放在 ram 上,你可以读入整个内容并做一个 groupby:

    import pandas as pd
    
    df = pd.read_csv('filtered_final.csv')
    
    for city, data in df[['Name','Email']].groupby(df['City']):
        data.to_csv(f'{city}_data.csv', index=False)
    

    【讨论】:

    • 嗨,Quang,你在这里使用了'pd'。是图书馆吗?我们需要导入那个吗?
    • @DeependraDangal 它是您标记的 pandas 的标准简写。
    • 好的@Quang。有效。但是在新的 CSV 文件中,一个额外的标识符会自动添加到第一列(在名称和电子邮件列之前)
    • 哦,我忘记将index=False 传递给to_csv。查看更新。
    【解决方案2】:

    然后尝试像这样导入:

    df = pd.read_csv('filtered_final.csv', usecols=['Name','Email'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      相关资源
      最近更新 更多