2016-12-30 13 views
4

В питона панд, есть серия/dataframe столбец ул значений объединить в одну длинную строку:Python Панды конкатенации серии строк в одну строку

df = pd.DataFrame({'text' : pd.Series(['Hello', 'world', '!'], index=['a', 'b', 'c'])}) 

Цель: «Привет, мир!»

До сих пор методы, такие как df['text'].apply(lambda x: ' '.join(x)), возвращали только серии.

Каков наилучший способ добраться до цели конкатенированной строки?

ответ

7

Вы можете join строка на серии непосредственно:

In [3]: 
' '.join(df['text']) 

Out[3]: 
'Hello world !' 
+0

Я получаю сообщение об ошибке: «ТипError: элемент последовательности 0: ожидаемый экземпляр str, список найден». Это в python3, не могли бы вы посоветовать? – user1930402

+0

@ user1930402, задавая вопросы в комментариях, является плохой формой на SO, сообщение об ошибке ясно, что у вас есть списки в вашем фрейме данных, а не строки, следовательно, ошибка. Поскольку у меня нет доступа к вашему компьютеру, я могу только предположить, что по какой-то причине вы храните списки в своем df, что нецелесообразно. Я не могу вам помочь, вам нужно опубликовать новый вопрос, вы также должны спросить себя, действительно ли вам нужно хранить списки вообще, это наносит ущерб использованию панд при хранении не скалярных значений – EdChum

2

Помимо join, вы можете также использовать метод панд строки .str.cat

In [171]: df.text.str.cat(sep=' ') 
Out[171]: 'Hello world !' 

Однако join() гораздо быстрее.