Разделить строку в серии Pandas

Могу ли я использовать функцию Split() для передачи этой серии:

s = pd.Series(['adh', 'bei', np.nan, 'cfj'])

К любому из этих выходов:

s = pd.DataFrame({
    'A': ['a', 'b', 'c'],
    'B': ['d', 'e', 'f'],
    'C': ['h', 'i', 'j']
})

или:

s = pd.DataFrame({
    'A': ['a', 'b', np.nan, 'c'],
    'B': ['d', 'e', np.nan, 'f'],
    'C': ['h', 'i', np.nan, 'j']
})

Обновление: я не знал, что для этого можно напрямую использовать list() - я новичок в DA -. Спасибо @mozway

Решения не должны быть предметом обсуждения; вот для чего нужны ответы.

wjandrea 28.08.2024 16:24
0
1
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете str.split с помощью регулярного выражения, соответствующего символу до и после точки разделения:

s.str.split('(?<=.)(?=.)', expand=True)

Выход:

     0    1    2
0    a    d    h
1    b    e    i
2  NaN  NaN  NaN
3    c    f    j

Чтобы избежать NaN, добавьте dropna:

s.dropna().str.split('(?<=.)(?=.)', expand=True)

Выход:

   0  1  2
0  a  d  h
1  b  e  i
3  c  f  j
регулярное выражение

демо регулярного выражения

(?<=.)  # match a character before
        # match empty string
(?=.)   # match a character after

В качестве альтернативы вы также можете преобразовать каждую строку в список и передать конструктору DataFrame:

out = pd.DataFrame(map(list, s.dropna()))

Есть проблемы с моим ответом?

mozway 27.08.2024 09:11

Спасибо :-) Если все в порядке, не могли бы вы объяснить мне свое регулярное выражение, пожалуйста?

Mohamad Osama 27.08.2024 09:11

Я добавил описание регулярного выражения

mozway 27.08.2024 09:14

Другие вопросы по теме