Pandas 我的数据帧有一个系列,其中包含应该是浮动的对象,它们有“;M”“;K”;附加到它们和小数。我怎样把它们分开?

Pandas 我的数据帧有一个系列,其中包含应该是浮动的对象,它们有“;M”“;K”;附加到它们和小数。我怎样把它们分开?,pandas,Pandas,我试过使用str.replace并手动隔开欧元、M和K,但由于全速停止,结果没有达到预期效果。有人能帮忙吗?我发现了类似的问题,但由于小数点的原因,这些解决方案不起作用。谢谢 请在结束前阅读 这个问题越来越接近尾声,我也越来越倾向于回答一个没有回答这个问题的答案 IIUC,让我们使用extract和捕获整数或小数的a,然后将M和K转换为数字,并使用prod: 输出: arr = np.array(['€110.5M', '€77M', '€118.5M', '€72M', '€102M', '

我试过使用str.replace并手动隔开欧元、M和K,但由于全速停止,结果没有达到预期效果。有人能帮忙吗?我发现了类似的问题,但由于小数点的原因,这些解决方案不起作用。谢谢

请在结束前阅读


这个问题越来越接近尾声,我也越来越倾向于回答一个没有回答这个问题的答案

IIUC,让我们使用
extract
和捕获整数或小数的a,然后将M和K转换为数字,并使用
prod

输出:

arr = np.array(['€110.5M', '€77M', '€118.5M', '€72M', '€102M', '€93M', '€67M',
       '€80M', '€51M', '€68M', '€76.5M', '€44M', '€60M', '€63M', '€89M',
       '€83.5M', '€78M', '€58M', '€53.5M', '€51.5M', '€38M', '€64.5M',
       '€27M', '€81M', '€69.5M', '€59.5M', '€62M', '€73.5M', '€59M',
       '€46M', '€43M', '€36M', '€57M', '€24M', '€30M', '€4M', '€64M',
       '€30.5M', '€62.5M', '€52M', '€45M', '€34M', '€46.5M', '€61M',
       '€41.5M', '€44.5M', '€56.5M', '€53M', '€50M', '€55M', '€36.5M',
       '€45.5M', '€43.5M', '€35M', '€39M', '€18M', '€21.5M', '€50.5M',
       '€54M', '€40.5M', '€37.5M', '€28.5M', '€37M', '€32M', '€26M',
       '€33M', '€38.5M', '€35.5M', '€9M', '€15.5M', '€22M', '€14M',
       '€42.5M', '€31.5M', '€42M', '€25M', '€29.5M', '€31M', '€24.5M',
       '€27.5M', '€29M', '€16.5M', '€23M', '€19M', '€4.2M', '€40M',
       '€41M', '€28M', '€22.5M', '€34.5M', '€32.5M', '€20M', '€26.5M',
       '€25.5M', '€21M', '€13M', '€17.5M', '€11.5M', '€8M', '€6M',
       '€19.5M', '€6.5M', '€20.5M', '€23.5M', '€18.5M', '€17M', '€12.5M',
       '€15M', '€13.5M', '€4.8M', '€3M', '€1.5M', '€16M', '€10M', '€11M',
       '€7M', '€14.5M', '€5.5M', '€10.5M', '€4.5M', '€12M', '€ 0',
       '€9.5M', '€8.5M', '€2M', '€1.7M', '€1M', '€3.6M', '€7.5M', '€3.8M',
       '€5M', '€2.4M', '€2.9M', '€4.7M', '€4.1M', '€2.1M', '€600K',
       '€2.7M', '€3.4M', '€2.5M', '€3.2M', '€3.1M', '€4.9M', '€4.3M',
       '€2.3M', '€525K', '€3.9M', '€1.8M', '€2.2M', '€4.4M', '€1.6M',
       '€900K', '€3.7M', '€3.5M', '€1.9M', '€450K', '€775K', '€650K',
       '€750K', '€2.8M', '€1.3M', '€4.6M', '€2.6M', '€1.2M', '€375K',
       '€3.3M', '€270K', '€950K', '€550K', '€1.1M', '€975K', '€1.4M',
       '€725K', '€425K', '€210K', '€875K', '€675K', '€325K', '€800K',
       '€850K', '€160K', '€120K', '€825K', '€925K', '€625K', '€240K',
       '€500K', '€575K', '€200K', '€250K', '€700K', '€350K', '€475K',
       '€300K', '€70K', '€140K', '€230K', '€400K', '€280K', '€100K',
       '€60K', '€260K', '€180K', '€220K', '€50K', '€290K', '€90K',
       '€150K', '€40K', '€130K', '€190K', '€170K', '€110K', '€30K',
       '€80K', '€20K', '€10K'], dtype=object)

s=pd.Series(arr)
df = s.str.strip('€').str.extract('(\d+\.?\d*)(K|M)').replace({'M':1000000,'K':1000})
df[0] = pd.to_numeric(df[0], errors='coerce')
s_out = df.prod(axis=1)
s_out
arr = np.array(['€110.5M', '€77M', '€118.5M', '€72M', '€102M', '€93M', '€67M',
       '€80M', '€51M', '€68M', '€76.5M', '€44M', '€60M', '€63M', '€89M',
       '€83.5M', '€78M', '€58M', '€53.5M', '€51.5M', '€38M', '€64.5M',
       '€27M', '€81M', '€69.5M', '€59.5M', '€62M', '€73.5M', '€59M',
       '€46M', '€43M', '€36M', '€57M', '€24M', '€30M', '€4M', '€64M',
       '€30.5M', '€62.5M', '€52M', '€45M', '€34M', '€46.5M', '€61M',
       '€41.5M', '€44.5M', '€56.5M', '€53M', '€50M', '€55M', '€36.5M',
       '€45.5M', '€43.5M', '€35M', '€39M', '€18M', '€21.5M', '€50.5M',
       '€54M', '€40.5M', '€37.5M', '€28.5M', '€37M', '€32M', '€26M',
       '€33M', '€38.5M', '€35.5M', '€9M', '€15.5M', '€22M', '€14M',
       '€42.5M', '€31.5M', '€42M', '€25M', '€29.5M', '€31M', '€24.5M',
       '€27.5M', '€29M', '€16.5M', '€23M', '€19M', '€4.2M', '€40M',
       '€41M', '€28M', '€22.5M', '€34.5M', '€32.5M', '€20M', '€26.5M',
       '€25.5M', '€21M', '€13M', '€17.5M', '€11.5M', '€8M', '€6M',
       '€19.5M', '€6.5M', '€20.5M', '€23.5M', '€18.5M', '€17M', '€12.5M',
       '€15M', '€13.5M', '€4.8M', '€3M', '€1.5M', '€16M', '€10M', '€11M',
       '€7M', '€14.5M', '€5.5M', '€10.5M', '€4.5M', '€12M', '€ 0',
       '€9.5M', '€8.5M', '€2M', '€1.7M', '€1M', '€3.6M', '€7.5M', '€3.8M',
       '€5M', '€2.4M', '€2.9M', '€4.7M', '€4.1M', '€2.1M', '€600K',
       '€2.7M', '€3.4M', '€2.5M', '€3.2M', '€3.1M', '€4.9M', '€4.3M',
       '€2.3M', '€525K', '€3.9M', '€1.8M', '€2.2M', '€4.4M', '€1.6M',
       '€900K', '€3.7M', '€3.5M', '€1.9M', '€450K', '€775K', '€650K',
       '€750K', '€2.8M', '€1.3M', '€4.6M', '€2.6M', '€1.2M', '€375K',
       '€3.3M', '€270K', '€950K', '€550K', '€1.1M', '€975K', '€1.4M',
       '€725K', '€425K', '€210K', '€875K', '€675K', '€325K', '€800K',
       '€850K', '€160K', '€120K', '€825K', '€925K', '€625K', '€240K',
       '€500K', '€575K', '€200K', '€250K', '€700K', '€350K', '€475K',
       '€300K', '€70K', '€140K', '€230K', '€400K', '€280K', '€100K',
       '€60K', '€260K', '€180K', '€220K', '€50K', '€290K', '€90K',
       '€150K', '€40K', '€130K', '€190K', '€170K', '€110K', '€30K',
       '€80K', '€20K', '€10K'], dtype=object)

s=pd.Series(arr)
df = s.str.strip('€').str.extract('(\d+\.?\d*)(K|M)').replace({'M':1000000,'K':1000})
df[0] = pd.to_numeric(df[0], errors='coerce')
s_out = df.prod(axis=1)
s_out
0      110500000.0
1       77000000.0
2      118500000.0
3       72000000.0
4      102000000.0
          ...     
212       110000.0
213        30000.0
214        80000.0
215        20000.0
216        10000.0
Length: 217, dtype: float64