【问题标题】:Have to split dataframe column based on length value in another column必须根据另一列中的长度值拆分数据框列
【发布时间】:2019-09-03 17:04:37
【问题描述】:

我有以下格式的熊猫数据框 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()

【问题讨论】:

  • 当标题不能被 3 整除时会发生什么?

标签: python pandas lambda split


【解决方案1】:

使用内置的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

【讨论】:

    【解决方案2】:

    这是一种方法:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 2021-08-23
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多