列中的Python枚举/行计数器

列中的Python枚举/行计数器,python,pandas,numpy,Python,Pandas,Numpy,大家好,各位飞越者 社区中新出现了一个Python(pandas/numpy)问题 我正在使用pandas和numpy创建一个用于测试的示例数据帧。然而,出于几个原因,我需要一个列作为枚举器,或者行计数器,如果您愿意的话。我尝试了枚举函数: import pandas as pd import numpy as np N = 100 sample_data = pd.DataFrame({ 'A': np.random.rand(N), 'B': enumerate('A

大家好,各位飞越者

社区中新出现了一个Python(pandas/numpy)问题

我正在使用pandas和numpy创建一个用于测试的示例数据帧。然而,出于几个原因,我需要一个列作为枚举器,或者行计数器,如果您愿意的话。我尝试了枚举函数:

import pandas as pd
import numpy as np

N = 100
sample_data = pd.DataFrame({       
  'A': np.random.rand(N),
  'B': enumerate('A',1)})
但我一直在犯这样的错误: TypeError:类型为“enumerate”的对象没有len()

我该如何以最有效的方式进行这项工作

谢谢

N = 10

作为单个步骤,您可以使用
范围

sample_data = pd.DataFrame({       
        'A': np.random.rand(N), 
        'B' : range(1, N + 1)}
     )

print(sample_data)

          A   B
0  0.037303   1
1  0.693972   2
2  0.725926   3
3  0.110817   4
4  0.889411   5
5  0.138220   6
6  0.738190   7
7  0.695298   8
8  0.912171   9
9  0.601390  10

您也可以使用
枚举
,但需要重新排列列:

sample_data = pd.DataFrame(list(enumerate(np.random.rand(N), 1)),        
                     columns=['B', 'A'])[['A', 'B']]
print(sample_data)

          A   B
0  0.431247   1
1  0.004129   2
2  0.321802   3
3  0.866617   4
4  0.805049   5
5  0.767841   6
6  0.677050   7
7  0.293936   8
8  0.923059   9
9  0.953954  10

或者,为什么不直接使用构造函数自动创建的索引呢

sample_data = pd.DataFrame({       
       'A': np.random.rand(N)})

sample_data['B'] = sample_data.index + 1
print(sample_data)

          A   B
0  0.117788   1
1  0.177268   2
2  0.762664   3
3  0.667486   4
4  0.531079   5
5  0.291939   6
6  0.066751   7
7  0.497935   8
8  0.883126   9
9  0.598048  10

枚举返回的迭代器并不总是支持
len()
enumerate('A',start=1)
基本上与
iter([(1,'A')])
相同,iter只返回一个值,因为字符串
'A'
有一个项,我不确定您是否想要……谢谢COLDSPEED。但是,我想在数据帧内执行此操作,而不是单独的步骤。@Dsci已编辑。使用
范围
,而不是枚举。@COLDSPEED。非常感谢。你有例子吗?@Dsci据我所知,这完全回答了你的问题。您试图使用
枚举
,COLDSPEED建议您改用
范围
,并演示了它的工作原理,如您所述。@Dsci提出一个新问题。这就是你现在的答案。