Python 如何根据csv文件的列值获取行并将其保存到csv中?

Python 如何根据csv文件的列值获取行并将其保存到csv中?,python,pandas,csv,dataframe,row,Python,Pandas,Csv,Dataframe,Row,我正在尝试使用python来完成一项任务,我是python的初学者。我有一个大的csv文件,我必须根据特定列的值划分为不同的csv文件。例如,颜色列中包含红色值的所有行,将其保存在一个csv文件中;如果具有蓝色值,请将包含该值的行保存在其他csv文件中 import pandas as pd df = pd.read_csv('myfile.csv') #get all distinct colour for color in df['colour'].unique(): #filter

我正在尝试使用python来完成一项任务,我是python的初学者。我有一个大的csv文件,我必须根据特定列的值划分为不同的csv文件。例如,颜色列中包含红色值的所有行,将其保存在一个csv文件中;如果具有蓝色值,请将包含该值的行保存在其他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)
正如我所说的,这是一个很大的csv文件,在其中我要筛选的列有很多不同的值,所以写所有的值都会很乏味,但如果没有其他方法,也不会有问题

有人知道怎么做这个任务吗

例如:

名称年龄颜色等级
约翰15红色8
露西14蓝色7
凯蒂15红色9
Rob 16绿色6
迈克14蓝10
解决方案:

red\u color.csv
姓名年龄颜色等级
约翰15红色8
凯蒂15红色9
绿色
姓名年龄颜色等级
Rob 16绿色6
蓝色颜色.csv
姓名年龄颜色等级
露西14蓝色7
迈克14蓝10
编辑:我已经使用了代码,但我不知道为什么我在读取文件时会出错。我正在一台红帽子机器里读它

# 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'
#python3.6示例_read.py
回溯(最近一次呼叫最后一次):
文件“example_read.py”,第3行,在
df=pandas.read_csv('/home/usrlogr/lista_blanca.csv'))
parser\u f中的文件“/usr/local/lib/python3.6/site packages/pandas/io/parsers.py”,第702行
返回读取(文件路径或缓冲区,kwds)
文件“/usr/local/lib/python3.6/site packages/pandas/io/parsers.py”,第429行,已读
parser=TextFileReader(文件路径或缓冲区,**kwds)
文件“/usr/local/lib/python3.6/site packages/pandas/io/parsers.py”,第895行,在__
自制发动机(自制发动机)
文件“/usr/local/lib/python3.6/site packages/pandas/io/parsers.py”,第1122行,在“make”引擎中
self.\u engine=CParserWrapper(self.f,**self.options)
文件“/usr/local/lib/python3.6/site packages/pandas/io/parsers.py”,第1853行,在__
self.\u reader=parsers.TextReader(src,**kwds)
文件“pandas/_libs/parsers.pyx”,第387行,在pandas._libs.parsers.TextReader.\uu\cinit中__
文件“pandas/_libs/parsers.pyx”,第705行,在pandas.\u libs.parsers.TextReader.\u设置\u解析器\u源代码中
FileNotFoundError:[Errno 2]文件b'/home/usrlogr/lista_blanca.csv'不存在:b'/home/usrlogr/lista_blanca.csv'

有人知道问题出在哪里吗?我已经安装了Python 3.6.8和Pandas

在数据中获得所有不同的颜色。然后根据该颜色过滤每一行。最后,保存到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)

获取数据中的所有不同颜色。然后根据该颜色过滤每一行。最后,保存到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)

我推荐使用python中的pandas包来完成此任务。hellow,请尝试一下,如果脚本有错误,请告诉我们。您可以将数据过滤为红色、绿色和蓝色,然后将其另存为csv文件。我建议您使用python中的pandas软件包来完成此任务。hellow,请尝试一下,如果脚本有错误,请告知我们。您可以将数据过滤成红色、绿色和蓝色,然后将其保存为csv文件。我必须在哪里声明所有颜色值?在for循环之前?代码末尾的“a”字母也是代码的一部分吗?响应的Thx不需要声明所有颜色值。所有值均在此集合中(df.颜色)。结尾的字母a被删除。回答得很好,我只建议两件事:
df.color
应该是
df['color']
,以避免与其他专栏文章混淆,并获得最佳实践;和
df['color'].unique()
的运行时间比
set(df['color'])的运行时间略短一半,并且使用内置方法,也是最好的选择practice@G.Anderson; 谢谢你的评论。答案已更新。在此目录中找不到您正在读取的文件:/home/usrlogr/。相反,你可以把csv文件放在你运行笔记本的地方。我必须在哪里声明颜色的所有值?在for循环之前?代码末尾的“a”字母也是代码的一部分吗?响应的Thx不需要声明所有颜色值。所有值均在此集合中(df.颜色)。结尾的字母a被删除。回答得很好,我只建议两件事:
df.color
应该是
df['color']
,以避免与其他专栏文章混淆,并获得最佳实践;和
df['color'].unique()
的运行时间比
set(df['color'])的运行时间略短一半,并且使用内置方法,也是最好的选择practice@G.Anderson; 谢谢你的评论。答案已更新。在此目录中找不到您正在读取的文件:/home/usrlogr/。相反,您可以将该csv文件放在运行笔记本的位置。