我正在执行数据分析,其中步骤之一是通过组合多个字段来创建 key 。
不幸的是,给定字段中的位数并不总是相同。
一些信息
- 数据类型
my_field
是object
; -
nan
值已替换为'-'
性格。 - 但是,基本上,
my_field
是文本格式的数字 (INTEGER)。
代码
import pandas as pd
import numpy as np
data ={'product': ['PA1', 'PA2', 'PA3', 'PA4', 'PA5', 'PA6', 'PA7', 'PA8'],
'my_field': ['001', '0000000000002', '3', '04', '-', '5', '-', '6']}
df = pd.DataFrame(data)
df
原始数据
我的方法:
df['my_field'] = np.where(df['my_field'] == '-', '-' , df['my_field'].str.zfill(10) )
df
我的输出:
所需输出:
问题:某些输出超过 10 个字符。
最佳答案
在 zfill
之后进行切片怎么样,这样您将只保留最后 10 个字符:
df['my_field'] = np.where(df['my_field'] == '-', '-', df['my_field'].str.zfill(10).str[-10:])
bool 索引的替代方案:
df.loc[df['my_field'] != '-',
'my_field'] = df['my_field'].str.zfill(10).str[-10:]
输出:
product my_field
0 PA1 0000000001
1 PA2 0000000002
2 PA3 0000000003
3 PA4 0000000004
4 PA5 -
5 PA6 0000000005
6 PA7 -
7 PA8 0000000006
关于python - Pandas - 如何将字符串列转换为整数...然后转换为 10 个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73393421/