#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть такой фрейм данных:
df=
users|userids
user1|1
user3|3
user1,user2|1,2
user3,user4|3,4
user1,user3|1,3
user5,user6,user2|5,6,2
user11,user12,user13,user14,user15|11,12,13,14,15
Теперь я хочу, чтобы фрейм данных был разделен следующим образом:
df_modified=
user|userid
user1|1
user2|2
user3|3
user4|4
user5|5
user6|6
user11|11
user12|12
user13|13
user14|14
user15|15
Я пробовал
df_modified=df.pivot(columns='users',values='userids')
Не работает.На самом деле значения в df имеют тип strings
Ответ №1:
Давайте используем .str.split
для разделения строк в столбцах вокруг разделителя ,
, затем используем np.hstack
для складывания разделенных строк в столбцы по горизонтали, и, наконец, создадим новый фрейм данных из этих сложенных столбцов:
df_mod = pd.DataFrame({'users': np.hstack(df['users'].str.split(',')),
'userids': np.hstack(df['userids'].str.split(','))})
.drop_duplicates('users', ignore_index=True)
users userids
0 user1 1
1 user2 2
2 user3 3
3 user4 4
4 user5 5
5 user6 6
6 user11 11
7 user12 12
8 user13 13
9 user14 14
10 user15 15
Комментарии:
1. возникает следующая ошибка: ValueError: все массивы должны быть одинаковой длины. Отредактировал вопрос для лучшей идеи. У меня также есть элементы в df, которые не нуждаются в разделении
2. @Sam Я думаю, что это должно работать нормально даже для образца данных, предоставленных в отредактированном вопросе… Не могли бы вы, пожалуйста, перепроверить решение по данным образцам данных?
3. Мне нужно удалить drop_duplicates по какой-то причине, он показывает ошибку. Теперь это работает @Shubham
4. @Sam счастливого кодирования!