Pandas 数据帧范围索引

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/44452751/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 03:45:22  来源:igfitidea点击:

Pandas DataFrame RangeIndex

pythonpandasdataframemachine-learning

提问by MaxRussell

I have created a Pandas DataFrame. I need to create a RangeIndex for the DataFrame that corresponds to the frame - RangeIndex(start=0, stop=x, step=y)- where xand yrelate to my DataFrame.

我创建了一个 Pandas DataFrame。我需要创建一个RangeIndex为数据帧对应于框架- RangeIndex(start=0, stop=x, step=y)-其中xy与我的数据帧。

I've not seen an example of how to do this - is there a method or syntax specific to this?

我还没有看到如何执行此操作的示例 - 是否有特定于此的方法或语法?

thanks

谢谢

回答by jezrael

It seems you need RangeIndexconstructor:

看来你需要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)

More dynamic solution:

更动态的解决方案:

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)

EDIT:

编辑:

As @ZakS pointed in comments better is use only DataFrameconstructor:

正如@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