我有以下数据框:
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
,但要在数据框上运行永远需要花费很多时间。我的数据框包含一百万行。
答案 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