我想将特定的整数列格式化为ssn格式(xxx-xx-xxxx)。我看到openpyxl具有内置样式。我一直在使用熊猫,不确定是否可以使用这种特定格式。
我确实看到了-
df.iloc[:,:].str.replace(',', '')
但是我想用'-'替换','。
import pandas as pd
df = pd.read_excel('C:/Python/Python37/Files/Original.xls')
df.drop(['StartDate', 'EndDate','EmployeeID'], axis = 1, inplace=True)
df.rename(columns={'CheckNumber': 'W/E Date', 'CheckBranch': 'Branch','DeductionAmount':'Amount'},inplace=True)
df = df[['Branch','Deduction','CheckDate','W/E Date','SSN','LastName','FirstName','Amount','Agency','CaseNumber']]
ssn = (df['SSN'] # the integer column
.astype(str) # cast integers to string
.str.zfill(8) # zero-padding
.pipe(lambda s: s.str[:2] + '-' + s.str[2:4] + '-' + s.str[4:]))
writer = pd.ExcelWriter('C:/Python/Python37/Files/Deductions Report.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
答案 0 :(得分:0)
您的问题有点令人困惑,请看是否有帮助:
如果您有一列 integers ,并且您想要创建一个由字符串组成的SSN(社会保险号)格式的新列。您可以尝试以下操作:
df['SSN'] = (df['SSN'] # the "integer" column
.astype(int) # the integer column
.astype(str) # cast integers to string
.str.zfill(9) # zero-padding
.pipe(lambda s: s.str[:3] + '-' + s.str[3:5] + '-' + s.str[5:]))
答案 1 :(得分:0)
设置
社会安全号码是九位数字,格式为:AAA-GG-SSSS
s = pd.Series([111223333, 222334444])
0 111223333
1 222334444
dtype: int64
选项1
使用zip
和numpy.unravel_index
:
pd.Series([
'{}-{}-{}'.format(*el)
for el in zip(*np.unravel_index(s, (1000,100,10000)))
])
选项2
使用f-strings
:
pd.Series([f'{i[:3]}-{i[3:5]}-{i[5:]}' for i in s.astype(str)])
两种产品:
0 111-22-3333
1 222-33-4444
dtype: object