#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.