Как удалить ведущие пробелы из строк в наборах данных / списке? - PullRequest
0 голосов
/ 06 мая 2020

Я провожу сетевой анализ по сетям и заметил, что некоторые узлы обрабатываются по-разному только потому, что у них есть лишние пробелы (ведущие).

Я пытался удалить пробелы, используя следующие коды, но я не может заставить вывод снова стать строками.

rhedge = pd.read_csv(r"final.edge.csv")
rhedge

_________________
 source | to
 niala  | Sana, Sana
 Wacko  | Ana, Aisa

rhedge['to'][1]
'Sana, Sana'

rhedge['splitted_users2'] = rhedge['to'].apply(lambda x:x.split(','))

#I need to split them so they will be included as different nodes

Проблема в следующем коде

rhedge['splitted_users2'][1]
['Sana', ' Sana']

Как вы можете видеть, у второго Sana есть начальный пробел.

Я пытался сделать это:

split_users = []

for i in split:
    row = [x.strip() for x in i]
    split_users.append(row)

pd.Series(split_users)

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

СПАСИБО

1 Ответ

0 голосов
/ 06 мая 2020

Изменение выражения lambda

import pandas pd

# dataframe creation
df = pd.DataFrame({'source': ['niala', 'Wacko'], 'to': ['Sana, Sana', 'Ana, Aisa']})

# split and strip with a list comprehension
df['splitted_users2'] = df['to'].apply(lambda x:[y.strip() for y in x.split(',')])

print(df['splitted_users2'][0])

>>> ['Sana', 'Sana']

Альтернативно

Вариант 1

  • Разделить на ', ' вместо ','
df['to'] = df['to'].str.split(', ')

Вариант 2

  • Замените ' ' на '', а затем разделите на ','
  • Это позволяет удалить любые пробелы вокруг любого имя (например, [' Sana, Sana', ' Ana, Aisa'])
df['to'] = df['to'].str.replace(' ', '').str.split(',')
...