基于日期的智能,优雅的数据移动方式

时间:2019-05-29 04:07:26

标签: python python-3.x algorithm

我刚接触Python。我编写了一个脚本,该脚本可以帮助我读取,分析,操纵工程数据并将其写入csv文件。为了使其完全自动化,我需要能够移动数据(当前是在excel中进行操作),请考虑下面的数据集示例:

  • Date_1 Value_A1 Value_B1
  • Date_2 Value_A2 B2值
  • Date_3 Value_A3 Value B3
  • Date_4 Value_A4 Value B4

我希望将其输出如下:

  • Date_1 Value_A2 Value_B1
  • Date_2 Value_A3 B2值
  • Date_3 Value_A4 Value B3

通知值A1消失,最后一行数据被删除。但是第二列中的所有数据都移到了上一个时间步。

我尝试了几种不同的方法,但是它们包括将代码的不同部分放在其他部分之前或之后,以在新行覆盖之前读取的行中获取数据。它被证明很难遵循,因此如果计算中存在错误,则很难排除故障。只是想知道是否有一个聪明的方法来实现这一目标

1 个答案:

答案 0 :(得分:0)

使用zip函数可以轻松完成此操作,方法是将列表与第二个位置开始的副本本身组合在一起:

data = [ ("Date_1", "Value_A1", "Value_B1"),
         ("Date_2", "Value_A2", "Value B2"),
         ("Date_3", "Value_A3", "Value B3"),
         ("Date_4", "Value_A4", "Value B4")]

shifted = [ (d1[0],d2[1],d1[2]) for d1,d2 in zip(data,data[1:]) ]
for line in shifted: print(line)


# ('Date_1', 'Value_A2', 'Value_B1')
# ('Date_2', 'Value_A3', 'Value B2')
# ('Date_3', 'Value_A4', 'Value B3')