簡體   English   中英

如何根據csv文件的列值獲取行並將其保存到csv中?

[英]How can I obtain and save row into csv depending of a column value of csv file?

我正在嘗試使用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

獲取數據中所有不同的顏色。 然后根據該顏色過濾每一行。 最后,保存到一個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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM