【问题标题】:Python CSV list manipulation / Date and TimePython CSV 列表操作/日期和时间
【发布时间】:2020-09-18 16:40:28
【问题描述】:

我正在开发一个更改现有 CSV 格式的 python 程序

这是 CSV 的目标格式

这是原始状态

3 个障碍

  1. 从modelchass中删除“-”(完成)

  2. 将“-”添加到产品日期和“T”(完成)

  3. 将 PL Seq 列表更改为时间/或可能创建带有时间的新列

    条件,08:00:00开始

    条件,每行加1

    条件,每个日期重新开始

条件,H seq 重启

第 1 步和第 2 步我已经想通了,但我在第 3 步上迷路了;

这是我目前的代码

import pandas as pd

df = pd.read_csv("AMS truck schedule.txt",delimiter=';')
df.to_csv('Demo1.csv')

import csv



with open('Demo1.csv','r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    order_numbers = []
    csvtimes = []
    sequence = []
    for line in csv_reader:
        order_numbers.append(line['MODELCHASS'])
        csvtimes.append(line['Prod Date'])
        sequence.append(line['PL Seq'])

#replace the dash for the order numbers
on = [sub.replace("-","") for sub in order_numbers]
print(on[1225])

newtimes = [x[0] + x[1] +x[2] +x[3] +"-" +x[4] +x[5] +"-" +x[6] +x[7] + "T" for x in csvtimes]

【问题讨论】:

  • 提供文本数据示例而不是屏幕截图。回答者想剪切粘贴测试数据。提供一个minimal reproducible example 来重现您遇到的问题。你有输入和输出状态,但你的代码没有什么问题。有什么问题?

标签: python csv date datetime


【解决方案1】:

我不能 100% 确定您何时要重新启动。 据我了解,如果:

a) 在 prod date col 最后一位更改 b) 当 pl seq 中的第一个字母发生变化时

如果我们到达 24 小时并且 (a 或 b) 为 False,该怎么办?我们是否继续 24 小时,直到我们 a 或 b 为真?

无论如何你可以添加更多条件,我不知道这是否是最有效的方法,但它有效。在这样做之前,您必须创建一个列:

df['hours'] = 8,所以它是一个所有行 = 8 的列 和 df = pd.DataFrame(pd.read_csv(filename))

prev_row = None
for index,row in df.iterrows():

    if prev_row is not None:

        if (row['pl'][0] == prev_row['pl'][0]) and (str(row['date'])[-2:] == str(prev_row['date'])[-2:]) :
            row['hours'] = prev_row['hours'] + 1
            print(row)
        else:
            row['hours'] = 8  
    df.iloc[index] = row     
    prev_row = row  

【讨论】:

猜你喜欢
  • 2013-03-30
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 2016-11-03
  • 1970-01-01
  • 2012-05-14
相关资源
最近更新 更多