首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSV文件重新格式化

CSV文件重新格式化
EN

Stack Overflow用户
提问于 2020-07-08 02:34:42
回答 2查看 57关注 0票数 3

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

代码语言:javascript
复制
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)

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-07-13 22:24:19

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

代码语言:javascript
复制
awk -F' ' '{print $5" "$1" "$2" "$3" "$4}' OFS=, "old.csv" | sort > new.csv

对于python解决方案,您可以使用Python - re-ordering columns in a csv来重新排列列,但是使用sort,内存有限的sort会简单得多。

票数 0
EN

Stack Overflow用户

发布于 2020-07-13 23:11:42

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

代码语言:javascript
复制
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.
  2. Use空格作为分隔字符传递:sep=" ".

  • 您的文件没有任何列名

对于反向数组,最后一行将你的数据列first.

  • Change order.

  • Export
  1. 到另一个.csv文件。指定分隔字符:sep=" ".
  2. We不需要任何特殊的行索引或标题:header=None, index=None.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62781787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档