У меня есть набор данных с метаданными о голосовых вызовах
Это выглядит как
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 phone 100 non-null string
1 group_id 100 non-null int64
2 question_id 100 non-null int64
3 result 100 non-null bool
Я хочу создать столбец № 4, который будет содержать некоторую статистику диалога, например. total_words (int64), а данные должны быть взяты из внешнего файла json, содержащего результаты распознавания речи в текст
Есть ли встроенный способ панд сделать это?
Я тестировал с pandas.read_json, но получаю ошибки модуля (ValueError: DataFrame constructor not properly called! и TypeError: argument of type 'method' is not iterable)
Я ищу что-то вроде
df['total_words'] = pd.read_json('file://localhost:8888/auido/' + df['phone'] + '.mp3.wstat.json')
Я был бы рад, если бы кто-нибудь предоставил пример рабочего кода для решения подобной проблемы.
UPD: вывод файла json выглядит как {"total_words": 74}






Попробуй это:
df['total_words']=df['phone'].apply(lambda x: pd.read_json(f'auido/{x}.mp3.wstat.json'))
Теперь каждая ячейка столбца total_words содержит другой фрейм данных, вы можете получить к нему доступ, используя:
#for first row
df.iloc[0]["total_words"].head()
спасибо за ваше предложение. Ваш пример выглядит чистым. Но в моем Юпитере я получаю ошибку URLError: <urlopen error [Errno 2] No such file or directory: '/auido/358411590810.mp3.wstat.json'>. Документы говорят, что параметр path_or_buf для локального файла в pandas.read_json (pandas.pydata.org/docs/reference/api/pandas.read_json.html) может быть похож на file://localhost/path/to/table.json, но в моем случае это не работает. Не могли бы вы предположить, почему?
@PaulSerikov, я обновил ответ. Я предполагаю, что проблема в пути. Пожалуйста, используйте relative path. В обновленном ответе я предположил, что каталог auido находится в том же каталоге, что и скрипт Jupiter.
Не могли бы вы поделиться выводом файла json, так как мы можем читать содержимое файла json в другом фрейме данных и выполнять присоединение к существующему фрейму данных.