应用Python函数拆分DataFrame列

2024-06-01 04:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(参见示例df),我需要将列拆分为2(参见示例df_exp)

import pandas as pd 
#given df 
df = pd.DataFrame(np.array([["Joe", 25, "40 RF"], ["Sam", 5, "RM"], ["Roy", 8, "50 SD"]]),columns=[0, 1, 2])
#expected df 
df_exp = pd.DataFrame(np.array([["Joe", 25, "40 RF", 40, "RF"], ["Sam", 5, "RM", None, "RM"], ["Roy", 8, "50 SD", 50, "SD"]]),columns=[0, 1, 2, 2.1, 2.2])

我有以下功能:

def split_string(string):
    if string[0].isnumeric()==True:
        sep = string.split(" ",1)
        return sep[0], sep[1]
    else:
        return None, string

我尝试应用它,但出现了一个错误,使用函数拆分列的最佳方法是什么

df[[21, 2.2]] = df.apply(lambda x: split_string(df.ix[:, 2]), axis = 1)

Tags: rm示例dataframedfstringsamnpsd
1条回答
网友
1楼 · 发布于 2024-06-01 04:32:06
import re

def split_string(string):
    return re.search('(\d+)?\s*(\w+)?', string).groups()
>>> df[2].apply(split_string).apply(pd.Series)
      0   1
0    40  RF
1  None  RM
2    50  SD

旧答案:
您可以使用extract来完成您想要的:

>>> df[2].str.extract(r'(\d+)?\s*(\w+)?')
     0   1
0   40  RF
1  NaN  RM
2   50  SD

相关问题 更多 >