分组后数据框中的第一列丢失

时间:2018-10-26 14:57:22

标签: python pandas dataframe nltk primary-key

如果这个问题太麻烦了,请原谅,我是Python的新手,需要在工作中使用它,不幸的是,这意味着您需要先进入更高层次的知识而无需首先了解基础知识...

我有一个带有文本记录的海量CSV文件,然后将其读入pandas数据框。这些成绩单被分解为ID,并且必须将ID分组以获取每次交互的唯一记录,因为它们会在其原始数据库中分解成多个部分。格式如下:

    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.

我使用以下代码按ID分组并创建单条记录:

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

这段代码很好用,但是现在我陷入了一个无法识别索引“ ID”的系列(?),我认为它已经与文本或其他内容合并了。当我使用to_frame()时,问题仍然存在。我想知道如何再次分离ID并将其用于索引数据吗?

1 个答案:

答案 0 :(得分:1)

groupby将返回groupby-ed列作为索引。查看您的代码,这就是我所看到的。

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

如果希望将ID作为数据框中的列,则可以采用序列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.