Python 通过字符串替换或正则表达式将列拆分为多个列

Python 通过字符串替换或正则表达式将列拆分为多个列,python,pandas,split,multiple-columns,Python,Pandas,Split,Multiple Columns,我的数据框中有一个“列”,在最佳条件下,它看起来如下所示: Client: Stack Overflow Order Num: 123456 Account From: 3656645654 Account to: 546546578 我想将此列拆分为以下几列: 'Client','Order Num', 'Account From','Account to' 但在某些情况下,我在列中没有客户机、订单编号和帐户 我是这样做的: for x in len(df.columns):

我的数据框中有一个“列”,在最佳条件下,它看起来如下所示:

Client: Stack Overflow   Order Num: 123456  Account From: 3656645654   Account to: 546546578

我想将此列拆分为以下几列:

'Client','Order Num', 'Account From','Account to'
但在某些情况下,我在列中没有客户机、订单编号和帐户

我是这样做的:

for x in len(df.columns):
   if 'Client' in df.loc[x,'Columnn']:
      df.loc[x,'Client'] = str(df.loc[x,'Column']).split('Client: ')[1]
      if 'Order Num' in df.loc[x,'Client']:
         df.loc[x,'Client'] = str(df.loc[x,'Client']).split('Order Num: ')[0]
      if 'Account From' in df.loc[x,'Client']:
         df.loc[x,'Client'] = str(df.loc[x,'Client']).split('Account From: ')[0]
      if 'Account to' in df.loc[x,'Client']:
         df.loc[x,'Client'] = str(df.loc[x,'Client']).split('Account to: ')[0]
   else:
      df.loc[x,'Client'] = ''

对于我要创建的所有列,依此类推

脚本的这一部分几乎有40行,速度非常慢


您是否有一个更“泛语言”的解决方案?

使用字符串访问器、
.str
使用正则表达式对命名组进行提取:

df['col1'].str.extract('Client: (?P<Client>.*) Order Num: (?P<OrderNum>.*) Account From: (?P<AccountFrom>.*) Account to: (?P<AccountTo>.*)')

使用字符串访问器、
.str
extract
以及使用regex的命名组尝试此操作:

df['col1'].str.extract('Client: (?P<Client>.*) Order Num: (?P<OrderNum>.*) Account From: (?P<AccountFrom>.*) Account to: (?P<AccountTo>.*)')