Как преобразовать значение фрейма данных, хранящееся в виде массива, в список

#python #pandas

#python #pandas

Вопрос:

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

  • Удалите все возвраты каретки из каждого значения в массиве
  • Разделите каждый элемент в массиве на отдельную строку.

У меня есть фрейм данных, который выглядит следующим образом:

           group         email
0         c             'samuel.tom@example.com / samuel tomrkate.leo@example.com / kate leorbilly.billerson@example.com',nan
 

Когда я набираю df["email"].values текст, я вижу следующее:

 array(['samuel.tom@example.com / samuel tomrkate.leo@example.com / kate leorbilly.billerson@example.com',nan], dtype=object
 

Что мне нужно сделать, так это создать следующее:

       group         email
0         c          samuel.tom@example.com / samuel tom
0         c          kate.leo@example.com / kate leo
0         c          billy.billerson@example.com
0         c          nan
 

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

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

Я попытался преобразовать значение в список, выполнив это:

 open_appended_file["Members"] = open_appended_file["Members"].tolist()
 

Но это все равно показывает значения, перечисленные как массив.

Любой совет?

Ответ №1:

Для меня, работающего Series.str.split с DataFrame.explode , если требуется разделение на r :

 df = df.assign(email = df['email'].str.split('r')).explode('email').reset_index(drop=True)
print (df)
  group                                email
0     c  samuel.tom@example.com / samuel tom
1     c      kate.leo@example.com / kate leo
2     c          billy.billerson@example.com
3     c                                  NaN
 

Комментарии:

1. Это работает, но я хотел бы понять, почему это работает. зачем мне нужно использовать «.str.»? Разве тип данных уже не является строковым типом данных? Является ли «.str.» простым преобразованием его в строку?

2. @LunchBox — это str средство доступа, ссылка , не для преобразования в строку, а для использования текстовой функции pandas.