剥离对象系列而不删除系列中的 int/float 个单元格
strip object series without deleting the int/float cells in the series
我有一系列类型 object
,当使用 Series.str.strip()
时,仅包含 int
的单元格会变成 Nan
。
如何避免这种情况?
例子
sr = pd.Series([1,2,3,'foo '])
sr.str.strip()
0 NaN
1 NaN
2 NaN
3 foo
dtype: object
期望的结果
0 1
1 2
2 3
3 foo
dtype: object
最简单的就是Series.fillna
:
用原始值替换缺失值
sr = pd.Series([1,2,3,'foo '])
sr.str.strip().fillna(sr)
或仅剥离由 isinstance
测试的字符串:
print (sr.apply(lambda x: x.strip() if isinstance(x, str) else x))
0 1
1 2
2 3
3 foo
dtype: object
您可以将系列全部转换为 str
,然后删除:
>>> sr.astype(str).str.strip()
0 1
1 2
2 3
3 foo
dtype: object
这样 1
变成 "1"
并且在剥离时保持不变。但它们最后仍将是字符串,而不是整数;不确定这是否是所需的输出。
我有一系列类型 object
,当使用 Series.str.strip()
时,仅包含 int
的单元格会变成 Nan
。
如何避免这种情况?
例子
sr = pd.Series([1,2,3,'foo '])
sr.str.strip()
0 NaN
1 NaN
2 NaN
3 foo
dtype: object
期望的结果
0 1
1 2
2 3
3 foo
dtype: object
最简单的就是Series.fillna
:
sr = pd.Series([1,2,3,'foo '])
sr.str.strip().fillna(sr)
或仅剥离由 isinstance
测试的字符串:
print (sr.apply(lambda x: x.strip() if isinstance(x, str) else x))
0 1
1 2
2 3
3 foo
dtype: object
您可以将系列全部转换为 str
,然后删除:
>>> sr.astype(str).str.strip()
0 1
1 2
2 3
3 foo
dtype: object
这样 1
变成 "1"
并且在剥离时保持不变。但它们最后仍将是字符串,而不是整数;不确定这是否是所需的输出。