寻找理想的方法来“清理”要放入Excel中的csv文件

问题描述 投票:1回答:2

此问题涉及的设置部分,请多多包涵!

(将下面的块复制并粘贴到编辑器中效果很好)

我正在使用clevercsv从金融网站的csv文件加载我的数据。每行都作为一项存储在列表中。

data = clevercsv.wrappers.read_csv(in_file_name)

在一些帐户信息行之后,库存数据开始:

stock_data = data[8:]

我希望删除数据:市场,贷款价值-一直到-日高(含0)>

并保留符号,说明->位置百分比(含),低52周,高52周

每个股票在相关行上都有与之关联的数据。有删除这些数据的最佳做法吗?我一直在尝试,似乎有逻辑错误。

截至日期,2020-04-29 18:44:29

帐户,道明直接投资-HAHAHA

现金,123.12

投资,1234.12

总值,12345.12

保证金,123456.12,

符号,市场,说明,数量,平均成本,价格,账面成本,市场价值,未实现的美元,未实现的百分比,持仓百分比,贷款价值,今天更改的美元,今天更改的百分比,出价,出价,要价,要价批次,交易量,日低,日高,52周低,52周高

AFL,US,“ AFLAC INC”,500,43.79,39.23,21895.79,19615.00,-2280.79,-10.42,7.26,,1.4399986,3.81,39.19,1,40.2,1,3001288,38.31,39.48,23.07, 57.18

AKTS,US,“ AKOUSTIS TECHNOLOGIES INC”,2500,5.04,8.94,12609.87,22350.00,9740.13,77.24,8.27,,0.35999966,4.20,8.68,1,9.2,10,1161566,8.65,9.25,3.76,9.25

这是到目前为止的代码:

import clevercsv
data = clevercsv.wrappers.read_csv(in_file_name)

# store the earlier lines for later use, all rows 8 and later are stock data
cash = data[2]
investments = data[3]
tot_value = data[4]
margin = data[5]
full_header = data[7]
stock_data = data[8:]

new_header = []
new_stock_data = []

# I have found the index positions I wish to save, append their data to the new_ lists:
for i in range(len(full_header)):
    if i == 0:
        new_header.append(full_header[i])
    if (i >= 2 and i <= 10):
        new_header.append(full_header[i])
    if i == 21:
        new_header.append(full_header[i])
    if i == 22: 
        new_header.append(full_header[i])
# I have found the index positions I wish to save, append their data to the new_ lists:
for i in range(len(stock_data)):
    if i == 0:
        new_stock_data.append(stock_data[i])
    if (i >= 2 and i <= 10):
        new_stock_data.append(stock_data[i])
    if i == 21:
        new_stock_data.append(stock_data[i])
    if i == 22: 
        new_stock_data.append(stock_data[i])

with open(os.path.join(folder_path,out_file_name),'w') as out_file:
    writer = clevercsv.writer(out_file)
    writer.writerow(cash)
    writer.writerow(investments)
    writer.writerow(tot_value)
    writer.writerow(margin)
    writer.writerow(new_header)
    for row in new_stock_data:
         writer.writerow(row)

如果我理解的太复杂,并且有人可以使用更好的库或更好的方式使用csv库,那么它本身就可以提供很多帮助。

这个问题的设置有点麻烦,但是请忍受! (将以下代码段复制并粘贴到编辑器中效果很好)我正在使用clevercsv从金融网站的csv文件加载数据。 ...

python csv slice
2个回答
0
投票

在Python中,我建议对这种操作使用Pandas


0
投票

如果您已经知道列索引和标题长度,则可以执行以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.