我是Python的新手,所以对术语不正确感到抱歉;我搜索了类似的帖子,但没有发现对我的案子有用的信息。 我有一个像这样的数据框:
Column1 Column2
0 0001 [('A','B'),('C','D'),('E','F')]
1 0001 [('A','B'),('C','D'),('E','F')]
2 0001 [('A','B'),('C','D'),('E','F')]
3 0002 [('G','H'),('I','J')]
4 0002 [('G','H'),('I','J')]
根据Column2列表中包含的元组数,每行被复制n次。 我想做的是添加一个新列,每行仅包含一个元组:
Column1 Column2 Column2_new
0 0001 [('A','B'),('C','D'),('E','F')] 'A' 'B'
1 0001 [('A','B'),('C','D'),('E','F')] 'C' 'D'
2 0001 [('A','B'),('C','D'),('E','F')] 'E' 'F'
3 0002 [('G','H'),('I','J')] 'G' 'H'
4 0002 [('G','H'),('I','J')] 'I' 'J'
您能帮我吗?
预先感谢您的任何建议
答案 0 :(得分:2)
我们可以在groupby+cumcount
之后做df.lookup
idx = df.groupby('Column1').cumcount()
df['new']= pd.DataFrame(df['Column2'].tolist()).lookup(df.index,idx)
print(df)
Column1 Column2 new
0 1 [(A, B), (C, D), (E, F)] (A, B)
1 1 [(A, B), (C, D), (E, F)] (C, D)
2 1 [(A, B), (C, D), (E, F)] (E, F)
3 2 [(G, H), (I, J)] (G, H)
4 2 [(G, H), (I, J)] (I, J)
答案 1 :(得分:1)