Python 该函数还可以删除数值
我有一个数据帧,可以从下面的代码生成Python 该函数还可以删除数值,python,python-3.x,pandas,dataframe,strip,Python,Python 3.x,Pandas,Dataframe,Strip,我有一个数据帧,可以从下面的代码生成 data_file= pd.DataFrame({'studyid':[1,2,3],'age_interview': [' 56','57 ','55'],'ethnicity': ['Chinese','Indian','European'],'Marital_status': ['Single','Married','Widowed'],'Smoke_status':['Yes','No','No']}) 一旦我创建了上面的数据帧,我就会将其融化并
data_file= pd.DataFrame({'studyid':[1,2,3],'age_interview': [' 56','57 ','55'],'ethnicity': ['Chinese','Indian','European'],'Marital_status': ['Single','Married','Widowed'],'Smoke_status':['Yes','No','No']})
一旦我创建了上面的数据帧,我就会将其融化并应用strip函数
obs = data_file.melt('studyid', value_name='valuestring').sort_values('studyid')
obs['valuestring'].str.strip()
虽然它在样本数据中工作良好,但在实际数据中它也会删除数值。我遵循与上面相同的代码,但只是数据不同
请找到之前和之后剥离功能的屏幕截图
obs = data_file.melt('studyid', value_name='valuestring').sort_values('studyid')
obs['valuestring'].str.strip()
在“obs['valuestring'].str.strip()”之前输出
在“obs['valuestring'].str.strip()”之后输出
如何防止删除数值?您的列似乎包含混合整数和字符串。下面是一个可复制的示例:
s = pd.Series([1, np.nan, 'abc ', 2.0, ' def '])
s.str.strip()
0 NaN
1 NaN
2 abc
3 NaN
4 def
dtype: object
如果该值不是字符串,则隐式处理为NaN
解决方案是在调用strip之前将列及其所有值转换为字符串
s.astype(str).str.strip()
0 1
1 nan
2 abc
3 2.0
4 def
dtype: object
对你来说,那就是
obs['valuestring'] = obs['valuestring'].astype(str).str.strip()
请注意,如果要保留NAN,请在末尾使用
掩码
s.astype(str).str.strip().mask(s.isna())
0 1
1 NaN
2 abc
3 2.0
4 def
dtype: object