Сбросить строку после n-го разрыва строки в столбце строки pandas dataframe - PullRequest
1 голос
/ 11 июля 2019

У меня есть пандас с несколькими столбцами. Глядя на один из них, введите string, моя цель - отбросить каждый символ после 500-го разрыва строки.

Мой подход до сих пор: цикл по n=len(string), подсчет \n и split(). Есть ли что-нибудь более элегантное и эффективное, что я мог бы сделать?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Немного более эффективное решение, разделится только на m+1 части -

df['A'] = ["".join(x.split("\n")[0:2]) for x in df['A']]
m = 2
df['A'] = ["".join(x.split("\n", m)[:-1]) for x in df['A']]

И если мы хотим использовать строковые функции панд -

df['A'] = df.A.str.split('\n',m).apply(lambda x: x[:-1]).str.join(" ")
1 голос
/ 11 июля 2019

Я не уверен, что вы использовали, когда говорите, что подсчитали "\ n", но использование функций join() и split() - довольно простой способ сделать это:

a = "a \n b \n c \n d"

"".join(a.split("\n")[0:2])

'a  b '

Поскольку вы работаете с фреймом данных, вы можете комбинировать это с пониманием списка, чтобы получить точный результат:

df = pd.DataFrame({"A" : ["a \n b \n c \n d", "d \n e \n f \n g"]})

df['A'] = ["".join(x.split("\n")[0:2]) for x in df['A']]

     A
0  a  b 
1  d  e 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...