первый столбец в кадре данных потерян после группировки - PullRequest
0 голосов
/ 26 октября 2018

Пожалуйста, извините, если этот вопрос слишком чуткий, я новичок в Python и мне нужно использовать его для работы, что, к сожалению, означает погружение в вещи более высокого уровня без предварительного понимания основ ...

У меня есть массивный CSV с текстовыми стенограммами, которые я читаю в кадре данных pandas. Эти стенограммы разбиты на идентификаторы, и идентификаторы должны быть сгруппированы, чтобы получить отдельную запись для каждого взаимодействия, поскольку они разбиты на сегменты в исходной базе данных, из которой они получены. Формат примерно такой:

    ID      TEXT
    1       This is the beginning of a convo
    1        heres the middle
    1       heres the end of the convo
    2       this is the start of another convo...etc.

Я использовал этот код для группировки по идентификатору и создания отдельных записей:

    df1 = df.groupby('ID').text.apply(' '.join)

Этот код работал отлично, но теперь я застрял в серии (?), Которая больше не распознает индекс «ID», я думаю, что он был слит с текстом или чем-то еще. Когда я использую to_frame (), проблема остается. Мне интересно, как я мог бы снова отделить идентификатор и использовать его для индексации данных?

1 Ответ

0 голосов
/ 26 октября 2018

groupby возвращает сгруппированный столбец в качестве индекса. Глядя на твой код, это то, что я вижу.

import pandas as pd
df = pd.DataFrame({'ID':[1,1,1,2], 
                  'TEXT':['This is the beginning of a convo', 'heres the 
                          middle', 'heres the end of the convo', 'this is the 
                          start of another convo...etc.']})
df1 = df.groupby('ID').TEXT.apply(' '.join)
print(df1)

ID
1    This is the beginning of a convo heres the mid...
2    this is the start of another convo...etc.
Name: TEXT, dtype: object

Вы можете взять серию df1 и переиндексировать ее, если хотите, чтобы идентификатор представлял собой столбец в кадре данных, или перейти к нему как к индексу для серии, что может быть удобно в зависимости от того, какие будут следующие шаги. быть.

df1 = df1.reset_index()
print(df1)

    ID  TEXT
0   1   This is the beginning of a convo heres the mid...
1   2   this is the start of another convo...etc.
...