Pandas DataFrame RangeIndex
Posted
技术标签:
【中文标题】Pandas DataFrame RangeIndex【英文标题】: 【发布时间】:2017-11-11 04:10:38 【问题描述】:我创建了一个 Pandas 数据框。我需要为对应于框架的 DataFrame 创建一个 RangeIndex -
RangeIndex(start=0, stop=x, step=y)
- 其中x
和y
与我的DataFrame 相关。
我还没有看到如何执行此操作的示例 - 是否有特定的方法或语法?
谢谢
【问题讨论】:
这很不言自明,您对什么感到困惑?df.index = range(0, x, y)
应该可以吗?还是您在寻找其他东西?
【参考方案1】:
看来你需要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 在 cmets 中指出,最好只使用 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 的步骤创建它以上是关于Pandas DataFrame RangeIndex的主要内容,如果未能解决你的问题,请参考以下文章
pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快
将 Pandas Multiindexed DataFrame 与 Singleindexed Pandas DataFrame 合并
pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快