【问题标题】:How to remove symbols after delimiter (.) in every row of column [2] in csv file?如何删除 csv 文件中列 [2] 的每一行中的分隔符 (.) 后的符号?
【发布时间】:2020-11-29 07:00:40
【问题描述】:

如何去除csv文件中[2]列每一行中分隔符(.)后的符号?

文件结构:

Date, Time, Open, High, Low, Last, Volume, NumberOfTrades, BidVolume, AskVolume
2019/12/30, 14:38:01, 3233.00, 3233.00, 3230.00, 3233.00, 1, 1, 0, 1
2019/12/30, 14:38:01.1, 3233.25, 3233.00, 3230.00, 3233.25, 2, 1, 0, 2
2019/12/30, 14:43:13, 3230.00, 3230.25, 3230.00, 3230.00, 1, 1, 1, 0
2019/12/30, 15:12:47, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47.1, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47.2, 3224.50, 3225.50, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:58, 3224.50, 3225.50, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:13:14, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:13:14.1, 3224.50, 3225.25, 3224.50, 3224.50, 2, 1, 2, 0

任务是在第二列“时间”中删除毫秒(.1、.2、.33、.444 等)

14:38:01.1 edit to 14:38:01
14:43:13 do not edit
15:12:47.1 edit to 15:12:47
15:12:47.2 edit to 15:12:47 

00:00:00.123 edit to 00:00:00

文件很大,所以修改应该是创建其他.csv文件,而不是更新原始文件。

import csv
f = open('Book1.csv')
csv_f = csv.reader(f)

for row in csv_f:

我被困在这里了。

我试过了,但不是解决办法。

row[2] = row[2][:-4] 

提前感谢您的帮助

【问题讨论】:

标签: python csv


【解决方案1】:

这可以通过split()来完成

编辑:将 row[2] 更改为 row[1],问题是错误的,我按照问题的流程进行了处理

row[1] = row[1].split(".")[0]

【讨论】:

  • try except 将是多余的 "14:38:01".split(".") => ['14:38:01'] & "14:38:01.01".split(".") => ['14:38:01', '01']
  • 它似乎工作正常!非常感谢!留给我的唯一问题是如何在不重写原始文件的情况下将其保存为 .csv。
【解决方案2】:

如果您愿意使用pandas,您可以在pd.read_csv 中使用converters 参数:

>>> df = pd.read_csv('book1.csv', converters={' Time': lambda x:x[:9]})

         Date       Time     Open  ...   NumberOfTrades   BidVolume   AskVolume
0  2019/12/30   14:38:01  3233.00  ...                1           0           1
1  2019/12/30   14:38:01  3233.25  ...                1           0           2
2  2019/12/30   14:43:13  3230.00  ...                1           1           0
3  2019/12/30   15:12:47  3224.50  ...                1           2           0
4  2019/12/30   15:12:47  3224.50  ...                1           2           0
5  2019/12/30   15:12:47  3224.50  ...                1           2           0
6  2019/12/30   15:12:58  3224.50  ...                1           2           0
7  2019/12/30   15:13:14  3224.50  ...                1           2           0
8  2019/12/30   15:13:14  3224.50  ...                1           2           0

[9 rows x 10 columns]

【讨论】:

    【解决方案3】:

    使用 pandas 数据框读取文件,然后在下面使用:

    import pandas as pd
    
    df = pd.read_csv('Book1.csv')
    df['Time'] = df['Time'].str.split('.').str[0]
    

    【讨论】:

    • OP 没有使用 Pandas,因此如果您要建议 Pandas 解决方案,您应该提供使其工作所需的其他代码行以及解释。
    • 问题未标记为 pandas。这是不使用 OP 模块的仅代码响应。请编辑并解释为什么您认为 OP 应该在此处使用 pandas,或将其删除。
    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 2021-07-31
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多