Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据为numpy数组的Pandas数据帧列使用前导零填充_Python_Pandas - Fatal编程技术网

Python 数据为numpy数组的Pandas数据帧列使用前导零填充

Python 数据为numpy数组的Pandas数据帧列使用前导零填充,python,pandas,Python,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' : [d

我有一个熊猫数据帧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'] = [['{: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]
编辑:


请你给我一个电话好吗。你所描述的对我有用;还有一些事情你没有告诉我们。@MarkDickinson,是的,我的错误消息在重新启动spyder后消失了。但是它没有用前导零填充值。@MarkDickinson,我也添加了代码,我用来创建数据帧。这是我创建的测试代码,在将来应用逻辑之前使用。除此之外,我没有其他东西。不要在数据帧中使用numpy数组或列表。这让一个琐碎的任务变得更加困难,没有什么好的理由。但使用这段代码,我得到了不同的输出。添加到我的原始帖子中。你能检查一下吗?没有数据。这是我未来工作的测试代码。我使用了您的第一种方法。我也将尝试其他方法。目前我只有这个代码我得到了它,需要删除
df['A']=df['A'].astype(str)
你是否删除
df['A']=df['A'].astype(str)
和同样的问题?我也使用
x.astype(int)
将它转换为pandas.core.series.series,但得到了错误消息
ValueError:用序列设置数组元素。
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...