如何在Python中多分割列

时间:2018-11-19 01:57:34

标签: python-3.x

我有以下数据框:

A B C     D
0 1 1  x = EUR 50; y= 4
1 2 2  x = EUR 60; y= 5
2 3 3  x = EUR 70; y= 6

D列同时具有=和;作为分隔符。我想将上面的数据框转换为下面的数据框,即删除EUR并将行值拆分为列,然后将其附加到原始数据框。

A B C  x   y
0 1 1  50  4
1 2 2  60  5
2 3 3  70  6

我使用过df.iterrows,但要在数据框上运行永远需要花费很多时间。我的数据框包含一百万行。

1 个答案:

答案 0 :(得分:1)

使用extract从列中提取数值。如果需要,可以使正则表达式更健壮(例如'^\s*x\s+=\sEUR\s+(\d+);\s+y=\s+(\d+)\s*$')。

PATTERN = '(\d+)\D+(\d+)' # Digits - non-digits - digits
df[['x', 'y']] = df['D'].str.extract(PATTERN)
df.drop('D', axis=1, inplace=True)
#   A B C   x  y
#0  0 1 1  50  4
#1  1 2 2  60  5
#2  2 3 3  70  6