Python Pandas: ссылки на переменные с разных уровней цикла при добавлении в новый фрейм данных - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть датафрейм df со следующими столбцами: ['doc_id', 'asent']

'asent' - это серия предложений, например, ['hello', 'как тебя зовут?','до свидания'], что я провожу анализ настроений и сохраняю их в отдельном фрейме данных.

df2 = pd.DataFrame(columns=['doc_id','sentence','vs'])

for para in df['asent']:
    for sentence in para:
        vs = analyzer.polarity_scores(sentence)
        df2 = df2.append(vs, ignore_index = True)

Чего я не могу понять, так это как добавить предложение и doc_id к результатам при добавлении.

Я попытался использовать df ['doc_id'], vs в append и получить "append () получил несколько значений для аргумента ignore_index" "

Я попытался объединить ds ['doc_id'] в качестве новой переменной перед добавлением этого и получения 'первый аргумент должен быть итерируемым из объектов pandas, вы передали объект типа "Series".

Добавлено: я понял, какдобавить предложение к выводу.Поскольку vs - это словарь, и для добавления предложения я использовал:

    vs['sentence'] = sentence

Но добавление doc_id все еще остается загадкой.

ДОБАВЛЕНО: Получил его с помощью счетчика, чтобы отследить, где в кадре данных IЯ в.Неуклюжий, но это работает:

df2 = pd.DataFrame(columns=['doc_id','sentence','vs'])
x = -1
for para in df['asent']:
    x += 1
    for sentence in para:
        vs = analyzer.polarity_scores(sentence)
        vs['doc_id'] = df.doc_id[x]
        df2 = df2.append(vs, ignore_index = True)

(я начал счетчик с -1, поскольку первая строка на [0])

Спасибо всем за помощь!

1 Ответ

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

похоже, что vs - это пустой столбец, который вы заполняете с помощью функции

, так что вы вообще должны повторять, просто выполните:

df2.vs = analyzer.polarity_scores(df.asent)

или метод apply:

df2.vs = df.asent.apply(analyzer.polarity_scores)

вы можете пойти в любую сторону ..

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