Pandas DataFrame RangeIndex

Posted

技术标签:

【中文标题】Pandas DataFrame RangeIndex【英文标题】: 【发布时间】:2017-11-11 04:10:38 【问题描述】:

我创建了一个 Pandas 数据框。我需要为对应于框架的 DataFrame 创建一个 RangeIndex - RangeIndex(start=0, stop=x, step=y) - 其中xy 与我的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比较快

python pandas dataframe 写入hdfs

pandas怎么选取dataframe中几列

详解pandas获取Dataframe元素值的几种方法