答案 0 :(得分:1)
将pd.Series
应用于category_id
列,将列表分成不同的列,然后将结果连接到user_id
列。
然后只需熔化结果,然后根据需要对user_id
和category_id
的最终值进行排序。
# Sample data.
df = pd.DataFrame({'user_id': range(2), 'category_id': [range(i, i + 3) for i in range(2)]})
# print(df)
# Output:
# user_id category_id
# 0 0 [0, 1, 2]
# 1 1 [1, 2, 3]
# Result.
>>> (pd.melt(
pd.concat([df['user_id'], df.category_id.apply(pd.Series)], axis=1),
id_vars='user_id', value_name='category_id')[['user_id', 'category_id']]
.dropna(subset=['category_id']) # Drop null categories.
.sort_values(['user_id', 'category_id']))
# Output:
# user_id category_id
# 0 0 0
# 2 0 1
# 4 0 2
# 1 1 1
# 3 1 2
# 5 1 3