gpt4 book ai didi

python - 用 numpy 数组的数据填充 Pandas 数据框列的前导零

转载 作者:行者123 更新时间:2023-11-30 22:23:05 25 4
gpt4 key购买 nike

我有一个 pandas 数据框 df,我使用以下代码来创建数据框

import numpy as np
import pandas as pd
data = np.array([11234466, 77777777, 12345678, 23452345])
data1 = np.array([99999999, 66666666, 44332211, 56781234])
df=pd.DataFrame({'A' : [data.tolist()]})
df1=pd.DataFrame({'A' : [data1.tolist()]})
df=pd.concat([df,df1])

其一列,A 列包含 numpy 数组。数据类型为对象。A 列看起来像

           A
[11234466, 77777777, 12345678, 23452345]
[99999999, 66666666, 44332211, 56781234]

所有值都是整数,大部分是 8 位数字。我想让它成为带有前导零的 10 位数字字符串。喜欢这个

      A
['0011234466', '0077777777', '0012345678', '0023452345']
['0099999999', '0066666666', '0044332211', '0056781234']

我想尝试下面的代码

 df['A'] = df['A'].astype(str)
df['A'] = df['A'].apply(lambda x: x.zfill(10))

但是,这不会填充零,而是使列保持原样。你能建议我如何用前导零填充 A 列的值吗?

<小时/>

使用 Jazrel 的建议,我得到了这个输出

       A
0 [000000000[, 0000000001, 0000000001, 000000000...
0 [000000000[, 0000000009, 0000000009, 000000000... `

最佳答案

我认为你可以使用列表理解:

df['A'] = df['A'].apply(lambda x: [str(y).zfill(10) for y in x])
print (df)
A
0 [0011234466, 0077777777, 0012345678, 0023452345]
0 [0099999999, 0066666666, 0044332211, 0056781234]
<小时/>
df['A'] = [[str(y).zfill(10) for y in x] for x in df['A']]
print (df)
A
0 [0011234466, 0077777777, 0012345678, 0023452345]
0 [0099999999, 0066666666, 0044332211, 0056781234]

具有格式的类似解决方案:

df['A'] = [['{:010d}'.format(y) for y in x] for x in df['A']]
print (df)
A
0 [0011234466, 0077777777, 0012345678, 0023452345]
0 [0099999999, 0066666666, 0044332211, 0056781234]

编辑:

data = np.array([[11234466], [77777777], [12345678], [23452345]])
data1 = np.array([[99999999], [66666666], [44332211], [56781234]])
df=pd.DataFrame({'A' : [data.tolist()]})
df1=pd.DataFrame({'A' : [data1.tolist()]})
df=pd.concat([df,df1])

df['A'] = [[['{:010d}'.format(z) for z in y] for y in x] for x in df['A']]
print (df)
A
0 [[0011234466], [0077777777], [0012345678], [00...
0 [[0099999999], [0066666666], [0044332211], [00...

关于python - 用 numpy 数组的数据填充 Pandas 数据框列的前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com