我正在尝试使用python来完成任务,而我是python的入门者。我有一个很大的csv文件,其中我必须根据特定列的值划分成不同的csv文件。例如,在color列中所有包含Red值的行,将其保存在一个csv文件中;如果具有蓝色值,则将包含蓝色值的行保存在其他csv文件中。
正如我所说,这是一个很大的csv文件,我要过滤的列中有很多彼此不同的值,因此写入所有值将很繁琐,但如果没有其他方法,将不会没问题。
有人知道如何执行此任务吗?
示例:
name age colour grade
John 15 Red 8
Lucy 14 Blue 7
Katty 15 Red 9
Rob 16 Green 6
Mike 14 Blue 10
解决方案:
red_colour.csv
name age colour grade
John 15 Red 8
Katty 15 Red 9
green_colour.csv
name age colour grade
Rob 16 Green 6
blue_colour.csv
name age colour grade
Lucy 14 Blue 7
Mike 14 Blue 10
编辑:我已经使用了代码,但是我不知道为什么读取文件时出错。我正在RedHat机器中阅读它。
# python3.6 example_read.py
Traceback (most recent call last):
File "example_read.py", line 3, in <module>
df = pandas.read_csv('/home/usrlogr/lista_blanca.csv')
File "/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py", line 702, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py", line 429, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py", line 895, in __init__
self._make_engine(self.engine)
File "/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py", line 1122, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py", line 1853, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas/_libs/parsers.pyx", line 387, in pandas._libs.parsers.TextReader.__cinit__
File "pandas/_libs/parsers.pyx", line 705, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File b'/home/usrlogr/lista_blanca.csv' does not exist: b'/home/usrlogr/lista_blanca.csv'
有人知道是什么问题吗?我安装了Python 3.6.8和Pandas
答案 0 :(得分:2)
获取数据中所有不同的颜色。然后根据该颜色过滤每一行。最后,保存到一个csv文件中。
import pandas as pd
df = pd.read_csv('myfile.csv')
#get all distinct colour
for color in df['colour'].unique():
#filter the data for each color and excluding John
df_temp = df[(df['colour'] == color) & (df['name'] != 'John')]
#save into csv file using filename: color_colour.csv
df_temp.to_csv(color.lower() + '_colour.csv', index=False)