我是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)谢谢
发布于 2020-07-13 22:24:19
你可以用awk做到这一点。此命令重新排列列并按第一列排序,并将结果写入new.csv
awk -F' ' '{print $5" "$1" "$2" "$3" "$4}' OFS=, "old.csv" | sort > new.csv对于python解决方案,您可以使用Python - re-ordering columns in a csv来重新排列列,但是使用sort,内存有限的sort会简单得多。
发布于 2020-07-13 23:11:42
您可以使用知名的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.csv文件。由于您的文件没有任何列名,因此我们将header=None.sep=" ".
对于反向数组,最后一行将你的数据列first.
.csv文件。指定分隔字符:sep=" ".header=None, index=None.,
https://stackoverflow.com/questions/62781787
复制相似问题