Как выбрать строки слов в качестве столбцов в Python - PullRequest
0 голосов
/ 07 июля 2019

Я хочу выбрать слова из строк в виде столбцов и впоследствии удалить те же слова из строки.

Я пытался увидеть функции панд, такие как .pivot и тому подобное, но ничего не сказал.

Вот мой ввод

['Sampling frequency: 8000 Hz',
 'Number of channels: 2 (16-bit integer)',
 'File name: /home/niraj/Documents/audiofiles/M1F1-int16.wav',
 'Sampling frequency: 8000',
 'Sampling frequency: 16000 Hz',
 'Number of channels: 1 (16-bit integer)',
 'File name: /home/niraj/Documents/jg00b1ss.wav',
 'Sampling frequency: 16000',
 'sample_rate: 16000',
 'Sampling frequency: 8000 Hz',
 'Number of channels: 2 (16-bit integer)',
 'File name: /home/niraj/Documents/M1F1-int16.wav',
 'Sampling frequency: 8000']

Ожидаемый вывод, который я ищу, это

    File name                sample_rate   Sampling frequency    Number of channels                                        
0  /home/niraj/Documents...  16000           8000Hz               2(16-bit integer)

если информация не найдена, она может быть либо пустой, либо недоступной.

1 Ответ

0 голосов
/ 07 июля 2019

IIUC, каждая запись начинается с данных "Частота выборки" и начинается с некоторых других значений, которые могут существовать или не существовать.

мы можем перебрать ваши данные и разделить их на записи на основе этого ключа, а затем создать DataFrame из этих записей:

import pandas as pd

data = ['Sampling frequency: 8000 Hz',
 'Number of channels: 2 (16-bit integer)',
 'File name: /home/niraj/Documents/audiofiles/M1F1-int16.wav',
 'Sampling frequency: 8000',
 'Sampling frequency: 16000 Hz',
 'Number of channels: 1 (16-bit integer)',
 'File name: /home/niraj/Documents/jg00b1ss.wav',
 'Sampling frequency: 16000',
 'sample_rate: 16000',
 'Sampling frequency: 8000 Hz',
 'Number of channels: 2 (16-bit integer)',
 'File name: /home/niraj/Documents/M1F1-int16.wav',
 'Sampling frequency: 8000']

records = []
for line in data:
    key, value = line.split(": ")
    if key == "Sampling frequency":
        records.append({key:value})
    records[-1][key]=value

df = pd.DataFrame.from_records(records)

print(df)

Панды уже будут использовать NaN для каждого поля, которое отсутствует в записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...