我有一个像这样的数据框:
|number |
1 |122 |
2 |345 |
3 | 456|
4 | 789|
我想把它改成:
|number|
1 |nan|
2 |nan|
3 |456|
4 |789|
我只想要右对齐值
最佳答案
我认为您需要测试 Series.str.endswith
是否有空格,然后用 Series.mask
替换为 NaN
,通过 Series.str.strip
删除可能的跟踪空格并转换为 float :
df['number'] = df['number'].mask(df['number'].str.endswith(' ')).str.strip().astype(float)
或者:
df['number'] = df['number'].mask(df['number'].str[-1] == ' ').str.strip().astype(float)
print (df)
number
1 NaN
2 NaN
3 456.0
4 789.0
如果想要整数,可以通过在 pandas 0.24+ 中工作的 integer na 来实现:
m = df['number'].str.endswith(' ')
df['number'] = df['number'].mask(m).str.strip().astype(float).astype('Int64')
print (df)
number
1 NaN
2 NaN
3 456
4 789
关于python - 检查文本在 python 中是否右对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59497391/