Python 基于现有列值的新列基础

Python 基于现有列值的新列基础,python,pandas,if-statement,conditional-statements,nan,Python,Pandas,If Statement,Conditional Statements,Nan,尝试基于现有列“Temp”值创建新值Chill或freezed Temp包含如下值: -18.00C -20.00C +10.00C +19.00C Nan DRY 如何使用Pandas实现它 df = pd.DataFrame({'Temp': ['-18.00C', '+10.00c', 'NaN', 'DRY']}) 如果Temp温度0.0C,它将处于Chill 如果Temp为“Nan”或“DRY”,它将属于NA 预期成果: Temp_Category Frozen Chill NA

尝试基于现有列“Temp”值创建新值
Chill
freezed

Temp
包含如下值:

-18.00C
-20.00C
+10.00C
+19.00C
Nan
DRY
如何使用Pandas实现它

df = pd.DataFrame({'Temp': ['-18.00C', '+10.00c', 'NaN', 'DRY']})
如果
Temp
温度<0.0C,它将处于
冻结状态下
如果
Temp
温度>0.0C,它将处于
Chill

如果
Temp
为“Nan”或“DRY”,它将属于
NA

预期成果:

Temp_Category
Frozen
Chill
NA
NA

您可以通过字典提取第一个值和,但必须在数字之前提取必要的值
+
-

df = pd.DataFrame({'Temp': ['-18.00C', '+10.00c', 'NaN', 'DRY', '+0c', '20c']})

d = {'-':'Frozen', '+':'Chill'}
df['new1'] = df['Temp'].str[0].map(d)
另一个想法是提取数值,转换为
float
并使用,但如果存在
0
输出也是
0
,则输出是
NaN

pat = r"([-+]?\d*\.\d+|\d+)"
d1 = {1:'Chill', -1:'Frozen', 0:'Chill'}
df['new2'] = np.sign(df['Temp'].str.extract(pat, expand=False).astype(float)).map(d1)
具有
2
条件和:


您可以通过字典提取第一个值和,但必须在数字之前提取必要的值
+
-

df = pd.DataFrame({'Temp': ['-18.00C', '+10.00c', 'NaN', 'DRY', '+0c', '20c']})

d = {'-':'Frozen', '+':'Chill'}
df['new1'] = df['Temp'].str[0].map(d)
另一个想法是提取数值,转换为
float
并使用,但如果存在
0
输出也是
0
,则输出是
NaN

pat = r"([-+]?\d*\.\d+|\d+)"
d1 = {1:'Chill', -1:'Frozen', 0:'Chill'}
df['new2'] = np.sign(df['Temp'].str.extract(pat, expand=False).astype(float)).map(d1)
具有
2
条件和:


如果值为
0
,会发生什么情况?正值之前总是有
+
?如果值为
0
,会发生什么?在正值之前总是有
+