自动检测色谱柱单位和单位转换

时间:2018-04-06 16:00:57

标签: python

我需要自动检测列的单位并转换以更正单位并重命名列。

标准单位应为:

 'Inch'(In) for 'Height' column 
 'Degree Celcius'(°C) for 'Temperature' column.

下面显示的样本表,其中需要转换单位。表可能有单位的混合,有些需要转换,有些则不需要。有什么想法吗?

Height (mm)  Temperature(°F)
16                    27
12                    30
17                    32
20                    23
14                    43

Height (mm)  Temperature(°C)
14                   31
13                   42
19                    50
22                    28
18                    36

1 mm = 0.0393701 inch
T(°C) = (T(°F) - 32) × 5/9

1 个答案:

答案 0 :(得分:1)

您可以使用.filter方法过滤列名称,然后应用转换并最终重命名:

import pandas as pd
df = pd.DataFrame({'Height (mm)':[16,12,17,20,14],'Temperature(°F)':[27,30,32,23,43]})
print('before conversion',df)
for x in df.filter(like='°F',axis=1).keys():
    df[x] = (df[x] - 32) * 5/9
    df.rename(columns={x:x.replace('°F','°C')}, inplace=True)

for x in df.filter(like='(mm)',axis=1).keys():
    df[x] = df[x] * 0.0393701
    df.rename(columns={x:x.replace('(mm)','(In)')}, inplace=True)
print('After conversion',df)

输出如下:

before conversion    
Height (mm)  Temperature(°F)
0           16               27
1           12               30
2           17               32
3           20               23
4           14               43
After conversion
Height (In)  Temperature(°C)
0     0.629922        -2.777778
1     0.472441        -1.111111
2     0.669292         0.000000
3     0.787402        -5.000000
4     0.551181         6.111111