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

标签 python pandas

我有一个 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/

相关文章:

python - Pandas 数据框绘图

python - 执行自定义 Django 404 页面的代码

python - 在 matplotlib 图中交互式选择系列

python - 如何删除从pandas中的excel读取的重复列

python - Pandas 在数据检索后更改列的顺序

python - 如何在 pandas 数据框中插入重复的列,并从新列的值中删除最后 3 个数字?

python - Linux/Bash 使用 PS -f 获取特定 PID 的返回格式与 PS -f 不同,也有关于使用 Grep 解析此问题的问题

python - 根据条件将一列中的值替换为另一列中的值

python - 具有两个列标识符的滚动平均值

python - 将另一列设置为索引后,保留数据帧的先前索引作为一列