python - 使用 Python 将特定数据从文本文件转换为 csv
问题描述
我正在尝试将文本文件中的数据转换为 csv 到它们相应的列名。
这是文本文件的示例
Run 1 Tbb= 20 C Volt=3.093 Tamb= 20.13 C
\1b2JTriTemp 1.0.5
AD Averaged 00f2(mV), 0001, 0001, 0001, 0001, 0001, 0001, 0000,
RAW Values 00f2(xx), FFFF, FFFF, FFFF, FFFF, FFFF, FFFF,
AD Averaged 0132(mV), 0001, 0001, 0004, 3061, 0002, 0001, 0000,
RAW Values 0132(xx), 0000, 0002, 0006, 0D0F, 0003, 0000,
当我运行此代码时:
import pandas as pd
with open("sample data as comma.txt", "r") as f:
data = f.readlines()
with open("sample data as comma.txt", "w") as f:
for line in data:
if "RAW" not in line:
f.write(line)
df = pd.read_csv("sample data as comma.txt", delimiter=',')
df.columns = ['', 'TH+', 'Vacm', 'Vout', 'Bat mon', 'TH-', 'Vbat2', 'Vamb', '']
df.to_csv('Sample raw data CSV.csv')
我收到一个错误“pandas.errors.ParserError:错误标记数据。C 错误:第 8 行中应有 1 个字段,看到 9”。
重要的是要注意,我希望能够保留定义它是哪个运行的行。EG "Run 1" 及其 Tbb、Volt 和 Tamb。这可以只在每个数据集之前的一行上。
另请注意,运行行应该是它自己的单独行,而不是排序到列中。
任何帮助/建议将不胜感激,谢谢!
解决方案
只需在此处进行一些操作并添加那些“空白”值。
因此,此代码查看所需的最大列数,然后在这些行中附加那些额外的“空白”值。
import pandas as pd
with open("sample data as comma.txt", "r") as f:
data = f.readlines()
data = [x.strip().split(',') for x in data if "RAW" not in x]
max_len = max([len(i) for i in data])
for row in data:
if len(row) < max_len:
row += [''] * (max_len - len(row))
df = pd.DataFrame(data, columns = ['', 'TH+', 'Vacm', 'Vout', 'Bat mon', 'TH-', 'Vbat2', 'Vamb', ''] )
df.to_csv('Sample raw data CSV.csv', index=False)
输出:来自您的样本数据
print(df.to_string())
TH+ Vacm Vout Bat mon TH- Vbat2 Vamb
0 Run 1 Tbb= 20 C Volt=3.093 Tamb= 20.13 C
1
2 \1b2JTriTemp 1.0.5
3
4
5 AD Averaged 00f2(mV) 0001 0001 0001 0001 0001 0001 0000
6 AD Averaged 0132(mV) 0001 0001 0004 3061 0002 0001 0000
推荐阅读
- ui-automation - 如何使用 winium.desktop 驱动程序获取桌面应用程序的 xpath?
- amazon-web-services - AWS Java SDK - 获取 EC2 实例信息
- php - Doctrine\DBAL\Exception\UniqueConstraintViolationException 试图插入一个实体
- angular - 如何访问同一对象中的对象值
- mongodb - Mongoose:过滤文档并操作嵌套数组
- .net - 在共享主机中托管 .NET Core Web API
- networking - Connecting to Android via Appium Server on different network
- android - ARCore with Twilio how is it implemented?
- c# - 在每个位置拆分一个字符串c#
- reactjs - Formik onSubmit function is not working on my code