首页 > 编程知识 正文

python选几列写入新csv,python选指定列

时间:2023-12-27 22:26:28 阅读:324345 作者:STFL

本文目录一览:

如何用python把list里的数据写入csv?

最常用的一种方法,利用pandas包

import pandas as pd#任意的多组列表a = [1,2,3]

b = [4,5,6]    

#字典中的key值即为csv中列名dataframe = pd.DataFrame({'a_name':a,'b_name':b})#将DataFrame存储为csv,index表示是否显示行名,default=Truedataframe.to_csv("test.csv",index=False,sep=',')1234567891011

a_name  b_name0       1       41       2       52       3       6

同样pandas也提供简单的读csv方法,

import pandas as pddata = pd.read_csv('test.csv')12

会得到一个DataFrame类型的data。

另一种方法用csv包,一行一行写入

import csv

#python2可以用file替代open

with open("test.csv","w") as csvfile:

writer = csv.writer(csvfile)

#先写入columns_name

writer.writerow(["index","a_name","b_name"])

#写入多行用writerows

writer.writerows([[0,1,3],[1,2,3],[2,3,4]])12345678910

index   a_name  b_name0       1       31       2       32       3       41234

读取csv文件用reader

import csvwith open("test.csv","r") as csvfile:

reader = csv.reader(csvfile)    #这里不需要readlines

for line in reader:

print line

Python怎么把循环得到的结果按照列依次写入到一个csv文件中

我改了一下你的代码,实测是可以从 a.csv复制到 b.csv中

import csv

def foo():

with open('a.csv', 'r') as f:

reader = csv.DictReader(f)

rows = [row for row in reader]

if not rows:

return

with open('b.csv', mode='w', newline='', errors='ignore') as f2:

for index, row in enumerate(rows):

if index == 0:

f_csv = csv.DictWriter(f2, fieldnames=list(row.keys()))

f_csv.writeheader()

f_csv.writerow(row)

if __name__ == '__main__':

foo()

python对多个csv文件里提取指定列汇总到一个新生成的csv文件

#!/usr/bin/env python

# coding: utf-8

import os

import re

def parserln(ln, patt):

    """用给定的正则表达式解析行"""

    matched = patt.match(ln)

    if matched:

        return matched.groupdict()

def getdata(filename, parser, callback=None):

    """用指定的解析方法parser解析指定文件,

        用callback进行数据加工过的数据列表

    """

    with open(filename, 'rt') as handle:

        return map(

            callback,

            filter(None, map(parser, handle))

            )

def storage(filename, dataserial, spliter=','):

    """将数据序列按行存储到指定文件,

        每一序列元素间用指定的字符分割"""

    with open(filename, 'wt') as handle:

        handle.writelines([

            "%sn" % (spliter.join(map(str, item)))

            for item in dataserial

        ])

if __name__ == "__main__":

    patt = re.compile(

        r"""^

        (?Pmonthd+),

        (?Pamountd+),

        (?Pusaged+)

        s*$""",

        re.I | re.U | re.X)

    datapath = 'datasource'

    # datasource下所有存在"usage.csv"文件的子目录

    subpaths = [

        os.path.join(datapath, path)

        for path in os.listdir(datapath)

        if (os.path.isdir(os.path.join(datapath, path))

            and os.path.exists(

                os.path.join(datapath, path, "usage.txt"))

            )

        ]

    storage(

        'store.csv',

        zip(*map(

            lambda path: getdata(

                os.path.join(path, "usage.csv"),

                # 解析方法为用patt解析行

                parser=lambda ln: parserln(ln, patt),

                # 数据加工方法是取出"amount"转成整数

                callback=lambda x: int(x["amount"]),

            ),

            subpaths))

        )

$ tail -n 12 datasource/*/*.csv

== datasource/2014/usage.csv ==

1,4234,423

2,3523,432

3,4352,438

4,4792,458

5,4823,834

6,5093,734

7,4743,832

8,5152,859

9,4932,810

10,4993,802

11,4999,810

12,5052,850

== datasource/2015/usage.csv ==

1,5234,423

2,4523,432

3,5352,438

4,5792,458

5,6823,834

6,6093,734

7,6743,832

8,7152,859

9,6932,810

10,6993,802

11,6999,810

12,7052,850

(venv)tim@crunchbang:~/workspace/baidu$

$ cat store.csv

4234,5234

3523,4523

4352,5352

4792,5792

4823,6823

5093,6093

4743,6743

5152,7152

4932,6932

4993,6993

4999,6999

5052,7052

$

利用Python如何将数据写到CSV文件中

如果你的数据是列表格式,可以使用一个迭代器,将数据写入文件,同时添加必要的分隔符以构成csv文件

如果数据是字典格式,需要考虑使用换行符或者其他特殊符号来分割每个字典元素(包括键和值)。键和值可以考虑使用和之前不重复的分隔符进行分割。

这样就构成了一个csv文件(csv使用分隔符分割值的文件)

操作方法如下:

1,使用读写追加的方式打开csv文件。

2,找到csv文件的结尾。

3,在结尾使用和之前csv使用的分割相同的格式进行数据添加。

4,关闭文件

python 读取多个csv文件中某一列,并生成一个新csv文件

csv文件应该是用逗号分隔得才对,否则怎么算作是csv文件。楼主你开玩笑吧。否则你这只是一个普通的文本文件。如果是真正的csv文件,我只说一点,python里面有csv模块,专门处理csv文件。如果是空格分割应该也可以,建议你,看一下python的csv模块的API,蛮简单的代码,其实如果不用的话自己写也可以。不是很复杂。代码片段如下:

def deal_file(file_in, file_out)

    with open(file_in, 'r') as f_in:

        with open(file_out, 'w') as f_out:

            for line in f_in:

                f_out.write(line.split(' ')[2] + 'n')

之后你可以将所有的输入文件放到一个列表里面,进行迭代调用这个函数就可以了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。