我有一个混合了单位的列,我需要把它分成两个不同的列:一个是公制(mm,cm,m),一个是英制(in,ft,yd)
d = {'col1': [1 in, 2 mm, 3 ft, 4 yd, 5 m, 6cm]}
df = pd.DataFrame(data=d)
将其分为:
Index df_metric df_imperial
0 | | 1 in
---------------------------------
1 | 2 mm |
---------------------------------
2 | | 3 ft
---------------------------------
3 | | 4 yd
---------------------------------
4 | 5 m |
---------------------------------
5 | 6 cm |
我试过:
def seperate_units(df, col, numbers):
if numbers.find('yd') > -1 or numbers.find('in') > -1 or numbers.find('ft') > -1 or numbers.find('"') > -1:
print(numbers)
df[col+'_imperial'].append(numbers)
else:
df[col+'_imperial'].append('')
return df[col+'_imperial']
但我不能让它工作
试试熊猫^{}
假设此输入数据帧:
您可以使用正则表达式查找公制单位,并在此条件下拆分:
在这里,正则表达式匹配一个后跟cm/m/mm的数字,您可以根据实际用例进行更新。 在
where
中,我用空字符串''
替换了它,但是您可以删除它以获得NaN,或者如果愿意的话,可以用任何其他内容替换它输出:
使用:
最后:
现在打印
df
您将获得预期的输出相关问题 更多 >
编程相关推荐