如何在python中选择要写入(.csv)的列

时间:2016-02-20 19:19:10

标签: python python-2.7 csv

import csv

f = csv.reader(open('lmt.csv','r'))         # open input file for reading
Date, Open, Hihh, mLow, Close, Volume = zip(*f)    #s plit it into separate columns

ofile = open("MYFILEnew1.csv", "wb")            # output csv file
c = csv.writer(ofile)

item = Date   
item2 = Volume
rows = zip(item, item)
i = 0
for row in item2:
    print row
    writer = csv.writer(ofile, delimiter='\t')
    writer.writerow([row])

ofile.close() 

以上是我到目前为止所制作的内容。

正如您在第3行中看到的,我从电子表格中提取了6列。 我想创建一个名为MYFILEnew1.csv的.csv文件,该文件只有两列,DateVolume

我上面创建的.csv只会将Volume列写入新的.csv文件的第一列。 您如何将Date放入第二列?

例如

Date       Open   High      Low     Close    Volume
17-Feb-16   210   212.97    209.1   212.74  1237731

是我拥有的。并且我想生成一个新的csv文件,使其具有

Date           Volume
17-Feb-16      1237731

3 个答案:

答案 0 :(得分:1)

在这里,我建议使用csv模块的csv.DictReader对象来读取和写入文件。要阅读文件,您可以执行类似

的操作
import csv
fieldnames=('Date', 'Open', 'High', 'mLow', 'Close', 'Volume')
with open('myfilename.csv') as f:
    reader = csv.DictReader(f, fieldnames=fieldnames)

除此之外,您只需要过滤掉每行不想要的密钥,同样使用csv.DictWriter类写入导出文件。

答案 1 :(得分:1)

如果我理解你的问题是正确的,你可以很容易地使用熊猫的read_csvto_csv(@ downvoter:你能解释你的downvote,拜托!?);您可以在 EDIT2

下找到问题的最终解决方案
import pandas as pd

# this assumes that your file is comma separated
# if it is e.g. tab separated you should use pd.read_csv('data.csv', sep = '\t')
df = pd.read_csv('data.csv')

# select desired columns
df = df[['Date', 'Volume']]

#write to the file (tab separated)
df.to_csv('MYFILEnew1.csv', sep='\t', index=False)

因此,如果您的data.csv文件如下所示:

Date,Open,Hihh,mLow,Close,Volume
1,5,9,13,17,21
2,6,10,14,18,22
3,7,11,15,19,23
4,8,12,16,20,24

运行上面的脚本后MYFILEnew1.csv看起来像这样:

Date    Volume
1   21
2   22
3   23
4   24

修改

使用您的数据(制表符分隔,存储在文件data3.csv中):

Date    Open    Hihh    mLow    Close   Volume
17-Feb-16   210 212.97  209.1   212.74  1237731

然后

import pandas as pd

df = pd.read_csv('data3.csv', sep='\t') 

# select desired columns
df = df[['Date', 'Volume']]

# write to the file (tab separated)
df.to_csv('MYFILEnew1.csv', sep='\t', index=False)

给出所需的输出

Date    Volume
17-Feb-16   1237731

<强> EDIT2

由于输入csv文件中的标题似乎搞砸了(如评论中所述),因此必须重命名第一列。以下现在使用整个数据集对我来说很好:

import pandas as pd

df = pd.read_csv('lmt.csv', sep=',') 

# get rid of the wrongly formatted column name
df.rename(columns={df.columns[0]: 'Date' }, inplace=True)

# select desired columns
df = df[['Date', 'Volume']]

# write to the file (tab separated)
df.to_csv('MYFILEnew1.csv', sep='\t', index=False)

答案 2 :(得分:1)

你是如此亲密:

androidTest