2016-02-01 8 views
2

Я занимаюсь анализом текста с помощью Python (Nltk, Pandas) и нуждаюсь в некоторой помощи с моей Dataframe. Я все еще начинаю программировать.Pandas: Слияние столбца dataframe с списком

У меня есть метка данных с меткой PoS (1000 строк, 5 столбцов).

имена столбцов: номер (это в индексе), Id, название, вопрос, ответы

#2 Example rows for Question: 

[('I', 'PRON'), ('am', 'VERB'), ('working', 'VERB'),('website', 'NOUN')] 
[('Would', 'VERB'), ('you', 'PRON'), ('recomme...)] 

#2 Example rows for Answers: 

[('This', 'DET'), ('is', 'VERB'), ('not', 'ADV'),('website', 'NOUN')] 
[('There', 'DET'), ('is', 'VERB'), ('a', 'DET'...)] 

Голы:

1.) одинсписок (не НТР) со всеми 1000 PoS Tagged вопросы

2.) одинсписок (не НТР) со всеми 1000 PoS Tag GED Ответы

3.) одинсписок (не НТР) со всеми 1000 PoS меткой ответы и вопросы

Что я пытался до сих пор, чтобы объединить все строки в столбце вопрос, но мой результат был как :

[[('I', 'PRON'), ('am', 'VERB'),..],[('Would', 'VERB'), 
('you', 'PRON'), ('recomme...)],[(.....)]] 

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

[('I', 'PRON'), ('am', 'VERB'), ('working', 'VERB'),.....] 

для всей колонки.

Редактировать после Beneres ответа:

Thx за быстрый ответ. .sum() был мой подход я делал раньше, но результат:

print (df['Merged']) 
0  [('Does', 'NOUN'), ('anyone', 'NOUN'), ('know'... 
1  [('I', 'PRON'), ('am', 'VERB'), ('building', '... 
2  [('I', 'PRON'), ('am', 'VERB'), ('wondering', ... 
3  [('I', 'PRON'), ('am', 'VERB'), ('working', 'V... 

Что мне нужно, это

print (df['Merged']) 
0  [('Does', 'NOUN'), ('anyone', 'NOUN'), ('know'... 
     ('I', 'PRON'), ('am', 'VERB'), ('building', '... 
     ('I', 'PRON'), ('am', 'VERB'), ('wondering', ... 
     ('I', 'PRON'), ('am', 'VERB'), ('working', 'V...] 

Edit 2: решена

ответ

0

Я решил проблему в странным образом, не знаю, если это хорошее решение, но оно работает:

from ast import literal_eval 

# sum all columns and replace resulting "][" between columns with ", " 
# change str to list with literal_eval 
allQuestions = literal_eval(dfQuestion.sum().replace("][", " ,")) 
allAnswers = literal_eval(dfAnswers.sum().replace("][", " ,")) 
allPosts = allQuestions + allAnswers 

Я надеюсь, что это может помочь кому-то еще.

0

Если я хорошо понимал, вам просто нужно:

df['Merged'] = df['Questions'] + df['Answers'] 

, которая объединяет вопросы и ответы, а затем сделать

df.sum() 

который сливает (суммы) все списки.

Пример:

import pandas as pd 

df = pd.DataFrame({'Q':[[('I', 'PRON'), ('am', 'VERB')], [('You', 'PRON'), ('are', 'VERB')]], 
       'A':[[('This', 'DET'), ('is', 'VERB')], [('Sparta', 'NOUN'), ('bitch', 'VERB')]]}) 
df['Merged'] = df['A'] +df['Q'] 

затем:

df.sum() 

выглядит следующим образом:

A   [(This, DET), (is, VERB), (Sparta, NOUN), (bit... 
Q   [(I, PRON), (am, VERB), (You, PRON), (are, VERB)] 
Merged [(This, DET), (is, VERB), (I, PRON), (am, VERB... 
dtype: object 

Тогда я не совсем уверен, что формат цели 3, пожалуйста, дайте подробнее если это не то, что вы хотите.

Смежные вопросы