我想从.txt文件的两列中检查x和y的最小值和最大值,但是我不知道如何。
嗨,大家好:)我进行了频谱分析,得到了500多条频率线和相应的dB。我想在jupyter笔记本中创建一个字典,使我可以检查x和y的最大值和最小值以及很少的光谱分析变化。我使用了这段代码:
y = {}
with open('wow.txt', "r") as infile:
for line in infile:
key, value = line.strip().split(':')
y[key] = (value)
print(y)
还有
d = {}
with open('wow.txt') as f:
for line in f:
key, value = line.strip().split(':')
d[key] = int(value)
但是有一个
ValueError:没有足够的值可解包(预期2,得到1)。
我从程序中获得了此值,并且有两列,所以我做错了什么?
答案 0 :(得分:3)
在文本文件中的某处没有':'字符,因此它不能分割行。也许某处空行?
此外,对于这种事情,我喜欢使用pandas,这是一个具有很多有趣功能的库。
import pandas as pd
df = pd.read_csv(file, delimiter=':', names=['freq', 'db'])
min = df.loc[df['db'].idxmin()]
max = df.loc[df['db'].idxmax()]
print('Minimum at {}Hz with a magnitude of {}dB'.format(min['freq'], min['db']))
print('Maximum at {}Hz with a magnitude of {}dB'.format(max['freq'], max['db']))