我有一个这样的数据框:
user groupIDs report
user2 [31501, 31502, 31503] blogpost
jim [31501, 31502, 31503] book
jane [31600] article
jim [31501, 31502, 31503] book
peter [31501, 31502, 31503] blogpost
user1 [31501, 31502] blogpost
user1 [31501, 31502] blogpost
john [31600] tweet
groupIDs
列包含整数列表。
我需要将此数据框转换为:
user groupIDs report
user2 31501 blogpost
user2 31502 blogpost
user2 31503 blogpost
jim 31501 book
jim 31502 book
jim 31503 book
jane 31600 article
...
也就是说,将具有多个ID的每一行转换为此行的副本列表,每个副本都包含原始列表中的一个ID。
使用此专栏的 groupby
抱怨由于显而易见的原因而无法播放。
答案 0 :(得分:2)
这应该可以解决问题
$wheres[]
答案 1 :(得分:1)
这是一种方法。这需要几行,但构建新的数据帧通常更有效。
from itertools import chain
df = pd.DataFrame([['user2', [31501, 31502, 31503], 'blogpost']],
columns=['user', 'groupIDs', 'report'])
lens = list(map(len, df['groupIDs']))
df_out = pd.DataFrame({'user': np.repeat(df['user'].values, lens),
'groupIDs': list(chain.from_iterable(df['groupIDs'].values)),
'report': np.repeat(df['report'].values, lens)})
# groupIDs report user
# 0 31501 blogpost user2
# 1 31502 blogpost user2
# 2 31503 blogpost user2