根据单列重塑Pandas数据框

阿诺德·克莱因

我需要根据特定列中的列表对数据框进行“重塑”,例如(请参见下文),我需要对最后一列中的列表进行重塑k,以使单个行中只有元素。对于k = 2

df = 

   c1  c2  c3           c4
  aa   bb  cc  [1,2,3,4,5]  

需要到达:

df_1 = 

  c1   c2   c3     c4
  aa   bb   cc  [1,2]
  aa   bb   cc  [3,4]
  aa   bb   cc    [5]

当然可以实现循环并附加新的数据帧,但是我对更多的Pandasian实现方式感兴趣,因为我的数据集很大。有任何想法吗?

BEN_YO

达蒙

df=df.reindex(df.index.repeat(df.c4.str.len()))# reindex to flatten your dataframe 
df.c4=df.c4.iloc[0]# assign the list value to one column
df
Out[334]:
   c1  c2  c3  c4
0  aa  bb  cc   1
0  aa  bb  cc   2
0  aa  bb  cc   3
0  aa  bb  cc   4
0  aa  bb  cc   5
df['key']=np.arange(len(df))//2# k=2

df.groupby(['c1','c2','c3','key']).c4.agg(lambda x : tuple(x.tolist()))# groupby get the expected output 
Out[352]: 
c1  c2  c3  key
aa  bb  cc  0      (1, 2)
            1      (3, 4)
            2        (5,)
Name: c4, dtype: object

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章