pandas列中的Python枚举/行计数器

时间:2017-08-30 16:15:17

标签: python pandas numpy

你好伙伴stackoverflowers,

带有Python(pandas / numpy)问题的社区新手。

我正在使用pandas和numpy来创建用于测试的示例数据帧。但是,由于几个原因,如果你愿意,我需要其中一个colums作为枚举器或行计数器。我尝试过枚举函数:

import pandas as pd
import numpy as np

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

但我一直收到这个错误:     TypeError:类型'枚举'的对象没有len()

我如何以最有效的方式做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

N = 10

只需一步,您就可以使用range

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

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

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