大熊猫条函数删除数值以及(Pandas strip function removes numeric

2019-09-27 04:33发布

我有可以从下面的代码来生成数据帧

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']}) 

一旦创建上述数据帧,我熔化并应用条函数

obs = data_file.melt('studyid', value_name='valuestring').sort_values('studyid')
obs['valuestring'].str.strip()

虽然样本数据中正常工作,在真实的数据将删除该数值为好。 我遵循同样的代码,上面只是数据不同。

前条功能后,请找到的屏幕截图

之前输出“OBS [ '的valueString'] str.strip。()”

后输出“OBS [ '的valueString']。str.strip()”

如何防止被删除数值?

Answer 1:

它看起来像你的列有混合整数和字符串。 这里有一个重复的例子:

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的处理。

解决的办法是在调用之前条到列和它的所有值到字符串转换。

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,使用mask底。

s.astype(str).str.strip().mask(s.isna())

0      1
1    NaN
2    abc
3    2.0
4    def
dtype: object


文章来源: Pandas strip function removes numeric values as well