Python 3.x 每行导入一个特定格式的文件到Python
如何导入包含带数字的纯文本的文件 很难导入,因为第一行包含7个数字,第二行包含8个数字 一般而言: 第1行:7个数字。 第2行:8个数字。 第3行:7个数字。 第4行:8个数字。 ... 等等 我刚刚试着阅读,但无法导入。我需要将数据保存在NumPy数组中Python 3.x 每行导入一个特定格式的文件到Python,python-3.x,Python 3.x,如何导入包含带数字的纯文本的文件 很难导入,因为第一行包含7个数字,第二行包含8个数字 一般而言: 第1行:7个数字。 第2行:8个数字。 第3行:7个数字。 第4行:8个数字。 ... 等等 我刚刚试着阅读,但无法导入。我需要将数据保存在NumPy数组中 filepath = 'CHALLENGE.001' with open(filepath) as fp: line = fp.readline() cnt = 1 while line: print("Lin
filepath = 'CHALLENGE.001'
with open(filepath) as fp:
line = fp.readline()
cnt = 1
while line:
print("Line {}: {}".format(cnt, line.strip()))
line = fp.readline()
cnt += 1
该文件包含每个频率的信息,如下所述:
< P>阅读时,你也必须跳过空白行。 只需检查第一行是否为空。如果不是,请多读3行。 冲洗并重复 下面是numpy数组和熊猫数据帧的示例
import pandas as pd
import numpy as np
filepath = 'CHALLENGE.001'
data = []
headers = ['frequency in Hz',
'ExHy coherency',
'ExHy scalar apparent resistivity',
'ExHy scalar phase',
'EyHz coherency',
'EyHx scalar apparent resistivity',
'EyHx scalar phase',
're Zxx/√(µo)',
'im Zxx/√(µo)',
're Zxy/√(µo)',
'im Zxy/√(µo)',
're Zyx/√(µo)',
'im Zyx/√(µo)',
're Zyy/√(µo)',
'im Zyy/√(µo)',
]
with open(filepath) as fp:
while True:
line = fp.readline()
if not len(line):
break
fp.readline()
line2 = fp.readline()
fp.readline()
combined = line.strip().split() + line2.strip().split()
data.append(combined)
df = pd.DataFrame(data, columns=headers).astype('float')
array = np.array(data).astype(np.float)
# example of type
print(type(df['frequency in Hz'][0]))
唯一的补充是。。。数据是dtype=object,但为了绘图(频率与ExHy一致性),我只做下一步:
x=df.frequency.values.astype(float)
。但我如何才能将数据帧中的每个值转换为浮点值呢?@PAULGOYES在创建数据帧时只需添加.astype('float')
。我改变了我的例子来反映这一点。