必须根据另一列中的长度值拆分数据框列

时间:2019-09-03 17:04:37

标签: python pandas lambda split

我有以下格式的pandas数据框df

Title                                               
ABCABCABC   
ABCDABCDABCD                            
ABCDEABCDEABCDE             
ABEABEABE                           

我想将Title列分成3个相等的部分。

预期输出:

Title1            Title2          Title3
ABC                ABC             ABC
ABCD               ABCD            ABCD 
ABCDE              ABCDE           ABCDE
ABE                ABE             ABE

请帮助我知道该怎么做。

我尝试获取长度,但不确定如何根据长度值进行分割。

  df['len'] = df.Title.str.len()

2 个答案:

答案 0 :(得分:5)

使用内置的textwrap模块。


import textwrap

pd.DataFrame(
  [textwrap.wrap(el, len(el)//3) for el in df['Title']]
).add_prefix('Title')

  Title0 Title1 Title2
0    ABC    ABC    ABC
1   ABCD   ABCD   ABCD
2  ABCDE  ABCDE  ABCDE
3    ABE    ABE    ABE

答案 1 :(得分:1)

这是一种方法:

pd.DataFrame([np.split(np.array(list(i)),3) for i in df.Title]).applymap(''.join)

       0      1      2
0    ABC    ABC    ABC
1   ABCD   ABCD   ABCD
2  ABCDE  ABCDE  ABCDE
3    ABE    ABE    ABE