pandas 转化,kg ml,l,比例转化为g比例

km0tfn4u  于 2023-05-12  发布在  其他
关注(0)|答案(1)|浏览(112)

我有以下pd.系列

s = pd.Series(['3.95/kg', '3.30/kg', '3.49/kg', '3.96/g', '8.49/kg', '3.19/kg',
       '0.0154/g', '8.98/kg', '6.35/kg', '5.79/kg', '3.79/kg', '6.59/kg',
       '3.50/kg', '3.85/kg', '3.55/kg', '5.59/kg', '5.98/kg', '0.0152/g',
       '5.99/kg', '3.20/gr', '8.99/kg', '16.90/kg', '4.29/kg',
       '0.0128/g', '5.29/kg', '3.39/kg', '6.29/kg', '4.59/kg',
       '28.90/kg', '4.69/kg', '0.0389/gr', '0.0099/ml', '0.0608/g',])

我想做的是把每一个比例转换成一个值,例如,它的单位是kg。将比例换算成克,与毫升和升比例相同。
例如,我们在弦上得到3.95/kg。我想要相同的比例,但以克为单位,这意味着我们必须将其除以1000,所以它是0.00395/g。如果串包含ml阱,则其保持相同。如果它包含一个l井它除以1000
想要的结果

pd.Series(['0.00395/g','0.00330/g','0,00349/g','3.96/g']) # And so on

有什么想法可以利用Pandas来做这个治疗吗?

lawou6xi

lawou6xi1#

示例

s = pd.Series(['3.95/kg', '3.30/kg', '3.49/kg', '3.96/g', '1.2/l', '0.0099/ml'])

s

0      3.95/kg
1      3.30/kg
2      3.49/kg
3       3.96/g
4        1.2/l
5    0.0099/ml
dtype: object

编码

df = s.str.split('/', expand=True)

df

0       1
0   3.95    kg
1   3.30    kg
2   3.49    kg
3   3.96    g
4   1.2     l
5   0.0099  ml

通过df[0]df[1]进行所需输出

(df[0]
 .astype('float')
 .div(df[1].map({'kg':1000, 'g':1, 'l':1000, 'ml':1}))
 .astype('str')
 .str.cat(df[1].replace({'kg': 'g', 'l':'ml'}), sep='/'))

输出:

0    0.00395/g
1     0.0033/g
2    0.00349/g
3       3.96/g
4    0.0012/ml
5    0.0099/ml
dtype: object

相关问题