Pandas DataFrame RangeIndex

12
我已经创建了一个Pandas DataFrame。我需要为该DataFrame创建一个RangeIndex,以便与frame相对应-RangeIndex(start = 0, stop = x, step = y) - 其中xy与我的DataFrame相关。
我没有看到如何完成这个任务的示例 - 是否有专门用于此的方法或语法?
谢谢。

这是相当自我解释的,你被什么搞糊涂了吗? - EdChum
df.index = range(0, x, y) 这样写可以吗?还是您想要其他的东西? - umutto
1个回答

12

看起来你需要使用 RangeIndex 构造函数:

df = pd.DataFrame({'A' : range(1, 21)})
print (df)
     A
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9   10
10  11
11  12
12  13
13  14
14  15
15  16
16  17
17  18
18  19
19  20


print (df.index)
RangeIndex(start=0, stop=20, step=1)

df.index = pd.RangeIndex(start=0, stop=99, step=5)
print (df)
     A
0    1
5    2
10   3
15   4
20   5
25   6
30   7
35   8
40   9
45  10
50  11
55  12
60  13
65  14
70  15
75  16
80  17
85  18
90  19
95  20

print (df.index)
RangeIndex(start=0, stop=99, step=5)

更加动态的解决方案:

step = 10
df.index = pd.RangeIndex(start=0, stop=len(df.index) * step - 1, step=step)
print (df)
      A
0     1
10    2
20    3
30    4
40    5
50    6
60    7
70    8
80    9
90   10
100  11
110  12
120  13
130  14
140  15
150  16
160  17
170  18
180  19
190  20

print (df.index)
RangeIndex(start=0, stop=199, step=10)

编辑:

正如@ZakS在评论中所指出的,更好的方法是仅使用DataFrame构造函数:

df = pd.DataFrame({'A' : range(1, 21)}, index=pd.RangeIndex(start=0, stop=99, step=5))
print (df)
0    1
5    2
10   3
15   4
20   5
25   6
30   7
35   8
40   9
45  10
50  11
55  12
60  13
65  14
70  15
75  16
80  17
85  18
90  19
95  20

1
这是否与创建一个数组并将其作为索引传递给数据框相同? - ZakS
1
我可能需要补充一下,根据文档,如果省略它,它将自动创建步长为1的内容。 - ZakS
RangeIndex(start=0, stop=240, step=1) \n months object \n Event Probability object Probability % float64 dtype: object 请问如何仅限制月份列? - Sumathi J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接