Python 如何根据数据帧中由逗号分隔的每个值的长度拆分字符串?

Python 如何根据数据帧中由逗号分隔的每个值的长度拆分字符串?,python,Python,我有一个类似H33、H431、H450的字符串,希望根据每个值的长度(用逗号分隔)将它们拆分为两个字符串。例如,在这个例子中,每个字符串的长度是3,4,4,我希望得到2个字符串H33和H431,H450 这最初是一个名为icd的数据帧,其列是第4列,如下所示。它包含具有特定数字长度的代码字符串。我的目标是将此列拆分为两列,其中包含具有特定数字长度的代码。所以我尝试使用for循环来实现这一点,但它没有提供我所需要的。我不确定这是不是最好的办法。认为apply可能更好,但不确定如何实现 对于icd.

我有一个类似H33、H431、H450的字符串,希望根据每个值的长度(用逗号分隔)将它们拆分为两个字符串。例如,在这个例子中,每个字符串的长度是3,4,4,我希望得到2个字符串H33和H431,H450

这最初是一个名为icd的数据帧,其列是第4列,如下所示。它包含具有特定数字长度的代码字符串。我的目标是将此列拆分为两列,其中包含具有特定数字长度的代码。所以我尝试使用for循环来实现这一点,但它没有提供我所需要的。我不确定这是不是最好的办法。认为apply可能更好,但不确定如何实现

对于icd.itertuples中的i: 对于i[4]中的substr,拆分“,”: 如果lensubstr.strip==3: 打印条 如果lensubstr.strip==4: 打印条 我不确定是否有一种更优雅的方式来完成任务而不使用for循环

def split(x, length):

    splitted_string = x.split(',')
    result = [substr.strip() for substr in splitted_string if len(substr.strip())==length]
    result = ', '.join(result)
    return result


df = pd.DataFrame({'a':["H33, H431, H450", "H21, H11, H521"]})

for length in [3, 4]:
    df[length] = df['a'].apply(lambda x: split(x, length))
>>> df.drop(['a'], axis=1)
          3           4
0       H33  H431, H450
1  H21, H11        H521