3

我是 python 新手,正在尝试重新格式化 CSV 文件,它没有分隔,所以所有数据都在第一列。该文件非常大,例如 1 GB 到 excel 大。文件格式如下,注意旧文件中的时间顺序是从最新到最旧颠倒的,要在新文件中从旧到最新颠倒。

old file is
   tagname1 tagname2 value1(t)  value2(t) timestamp(t)
   tagname1 tagname2 value1(t-1)  value2(t-1) timestamp(t-1)
   tagname1 tagname2 value1(t-2)  value2(t-2) timestamp(t-2)

desired file format
   timestamp(t-2)    tagname1       tagname2   value1(t-2)    value2(t-2)
   timestamp(t-1)    tagname1       tagname2   value1(t-1)    value2(t-1)
   timestamp(t)      tagname1       tagname2   value1(t)    value2(t)

谢谢

4

2 回答 2

0

您可以使用知名pandas库来导入和修改您的.csv文件。它非常受欢迎并且经常使用。这是一些代码:

import pandas as pd

data = pd.read_csv("file.csv", sep=" ", header=None) # 1
data = data.iloc[::-1] # 2
data = data[[4, 0, 1, 2, 3]] # 3

data.to_csv("out.csv", sep=" ", header=None, index=None) # 4
  1. 读取.csv文件。
    • 您的文件没有任何列名,因此我们通过header=None.
    • 使用空格作为分隔符:sep=" ".
  2. 反向数组,最后一行将是第一行。
  3. 更改列顺序。
  4. 将数据导出到另一个.csv文件。
    • 指定分隔符:sep=" ".
    • 我们不想要任何特殊的行索引或标题:header=None, index=None.
于 2020-07-13T15:11:41.997 回答
0

你可以用awk. 此命令重新排列列并按第一列排序并将结果写入new.csv

awk -F' ' '{print $5" "$1" "$2" "$3" "$4}' OFS=, "old.csv" | sort > new.csv

对于 Python 解决方案,您可以使用Python 重新排列列 - 重新排序 csv 中的列,但使用sort.

于 2020-07-13T14:24:18.773 回答