查找pandas数据帧中行号相同的所有单词

时间:2018-03-30 16:04:25

标签: python pandas

我有一个包含这些列的数据框     df [' Page',' Word',' LineNum']。

df =
    Idx页面字行号     0 1你好1
    1 1这1     2 1是2
    4 1和2
    5 2例1     6 2 of 1
    7 2字1     8 2对2     9 2多个2
    10 3页1     11 3合1     12 3 1     13 4文件1
    14 4其中1     15 4有1
    16 4分裂1

此数据框已从csv文件中提取,并包含有关该文档的详细信息。

可以想象,有几个单词出现在同一行(在LineNum中具有相同的值),而单个页面有几个这样的行。

这就是我想要做的事情:

for( all the pages in the dataframe)
    if(  LineNum is the same )
        df['AllWordsInLine'] = add all the words in the df['Word'] column.

所需的输出

  1. LineDF [' FullLine'] =
    Idx FullLine
    0你好这个 1是
    2单词的例子
    3跨越多个 中文4页 5分裂的文件
  2. 我只有大约2周的大熊猫,我非常感谢专家的回应。 谢谢, Venkat

2 个答案:

答案 0 :(得分:0)

df = pd.DataFrame({'Page':[0,0,0,1,1,1,2],
               'Word':['a','b','c','d','e','f','g'],
               'LineNum':[0,0,1,0,1,2,0]})

for line_page_tuple, subdf in df.groupby(['Page','LineNum']):
    print('Page:',line_page_tuple[0],', Line:',line_page_tuple[1],', All words in line:',
      subdf.Word.values)

# Page: 0 , Line: 0 , All words in line: ['a' 'b']
# Page: 0 , Line: 1 , All words in line: ['c']
# Page: 1 , Line: 0 , All words in line: ['d']
# Page: 1 , Line: 1 , All words in line: ['e']
# Page: 1 , Line: 2 , All words in line: ['f']
# Page: 2 , Line: 0 , All words in line: ['g']

答案 1 :(得分:0)

我假设您希望每个行号的所有单词跨页。换句话说,您需要从行号到单词集的映射。

您只需按LineNum分组并聚合设置即可实现此目的。这是一个最小的例子:

df = pd.DataFrame({'Page':[0,0,0,1,1,1,2],
                   'Word':['a','b','a','d','e','d','g'],
                   'LineNum':[0,0,1,0,1,2,0]})

res = df.groupby('LineNum')['Word'].apply(set)

# LineNum
# 0    {b, g, a, d}
# 1          {a, e}
# 2             {d}
# Name: Word, dtype: object