pandas 基于来自另一 Dataframe 的缩放因子转换 Dataframe 的列

wf82jlnq  于 2023-01-19  发布在  其他
关注(0)|答案(2)|浏览(112)

我有一个 Dataframe ,其中包含一个列length(数值)和另一个列单位(字符串)。

df2convert =
length    units
1.0       "m"       # meters
1.4       "in"      # inches
0.5       "km"      # kilometers
....

我有另一个 Dataframe ,它将所有单位Map为米。

units2meters:
units   scaling
"m"     1.0
"in"    0.0254
"km"    1000

我想把df2convert中的所有内容都转换成米。
目前,我没有加入/合并2个 Dataframe ,我将units2meters转换为dict,键为units,值为scaling,然后将df2.convert.units作为键传入哈希表。
有没有更好/更有效的方法来做这件事?

rm5edbpk

rm5edbpk1#

不确定这是否是您正在使用的方法,但我会使用:

lookup = units2meters.set_index("units")["scaling"]
df2convert["length"] * df2convert["units"].map(lookup)
0      1.00000
1      0.03556
2    500.00000
dtype: float64
gr8qqesn

gr8qqesn2#

import pandas as pd

df2convert = pd.DataFrame(data={
    "length":[1.0, 1.4, 0.5],
    "units":["m","in","km"]})

units2meters = pd.DataFrame(data={
    "units":["m","km","in"],
    "scaling":[1.0, 1000, 0.0254]})

merge = pd.merge(units2meters, df2convert, on="units")
merge["result"] = merge["length"] * merge["scaling"]

相关问题