Python - как преобразовать файл .txt (две колонки) в элементы словаря? - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу проверить минимальное и максимальное значения x и y из двух столбцов файла .txt, но я не знаю, как.

Привет, ребята :) Я провел спектральный анализ и получил более 500линии частоты и соответствующие дБ.Я хотел создать словарь в блокноте 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).

Я получил это значение из программы и в нем два столбца, так что я сделал не так?

1 Ответ

0 голосов
/ 28 декабря 2018

Где-то в текстовом файле нет символа ':', поэтому он не может разбить строку.Может быть, где-нибудь пустая строка?

Кроме того, для такого рода вещей мне нравится использовать 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']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...