我需要自动检测列的单位并转换以更正单位并重命名列。
标准单位应为:
'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
答案 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