python - 清理带有竖线的原始文本文件并将它们转换为 csv
问题描述
我有一个巨大的原始数据集(每个文本文件 4k 行),其中有很多竖线和空格。
|group call| pvt call |phone call|group busy| pvt busy |phone busy|
time |total |total |total |total |total |total | %
period| sec cnt | sec cnt| sec cnt| sec cnt| sec cnt| sec cnt | usage
00:00 | 4323 548| 0 0| 0 0| 0 0| 0 0| 0 0| 18%
00:15 | 4125 479| 0 0| 0 0| 0 0| 0 0| 0 0| 17%
00:30 | 3071 395| 0 0| 0 0| 0 0| 0 0| 0 0| 13%
00:45 | 3514 447| 0 0| 0 0| 0 0| 0 0| 0 0| 14%
01:00 | 3081 383| 0 0| 0 0| 0 0| 0 0| 0 0| 13%
我想将其转换为 csv 文件。我使用 python 和 pandas 构建的解析器只读取 csv 值。我该怎么做?csv 文件应类似于:
time_pd,group_call_t_s,group_call_t_c,pvt_call_t_sec,pvt_call_t_c,phone_call_t_sec,phone_call_t_c,group_busy_t_sec,group_busy_t_c,pvt_busy_t_sec, pvt_busy_t_c,phone_busy_t_sec, phone_busy_t_c, per_usage
00:00,4323,548,0,0,0,0,0,0,0,0,0,0,18%
00:15,4125,479,0,0,0,0,0,0,0,0,0,0,17%
00:30,3071,395,0,0,0,0,0,0,0,0,0,0,13%
00:45,3514,447,0,0,0,0,0,0,0,0,0,0,14%
01:00,3081,383,0,0,0,0,0,0,0,0,0,0,13%
01:15,4017,470,0,0,0,0,0,0,0,0,0,0,18%
01:30,4767,555,0,0,0,0,0,0,0,0,0,0,18%
解决方案
Python
如果所有文件具有相同的标题结构,您可以读取数据部分,分配标题,然后保存为 CSV:
data = pd.read_csv("file1.txt", sep=r'\s*\|?\s*', header=None, skiprows=3)
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13
#0 00:00 4323 548 0 0 0 0 0 0 0 0 0 0 18%
#1 00:15 4125 479 0 0 0 0 0 0 0 0 0 0 17%
#2 00:30 3071 395 0 0 0 0 0 0 0 0 0 0 13%
#3 00:45 3514 447 0 0 0 0 0 0 0 0 0 0 14%
#4 01:00 3081 383 0 0 0 0 0 0 0 0 0 0 13%
data.columns = "time_pd","group_call_t_s","group_call_t_c",...
data.to_csv("file1.csv", index=None)
推荐阅读
- c++ - 成员函数“attacked”的“this”参数的类型为“const Pokemon”,但函数未标记为 const
- c++ - 我应该遵循三/五女巫的数据结构规则吗?
- python - 使用熊猫返回最高频率
- reactjs - 反应useState加载不改变
- python - 如何从 tkinter 中的 Entry 获取可用作函数的数据?
- c++ - (C++) 如何使用 Payload Object 来实现线程池?
- ios - 验证 AASA 文件
- python - OpenCV 退出代码 -1073741819 (0xC0000005)
- kotlin - E/RecyclerView:没有附加适配器;在 kotlin 中跳过布局
- package-managers - 使用packages.config时如何递归调用nuget restore?