teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/11/09 02:28

投稿

kirara0048
kirara0048

スコア1399

answer CHANGED
@@ -1,3 +1,48 @@
1
+ いくつか方法があります。
2
+
1
3
  ```python
2
4
  df.assign(index=range(len(df)))
5
+ # または
6
+ df.assign(idx=np.arange(len(df)))
7
+ # または
8
+ df.assign(idx=pd.RangeIndex(len(df)))
3
- ```
9
+ ```
10
+
11
+ ---
12
+
13
+ 速度計測
14
+
15
+ ```python
16
+ import benchit
17
+ import numpy as np
18
+ import pandas as pd
19
+
20
+
21
+ def by_reset_reset(df):
22
+ return df.reset_index().reset_index().set_index('index')
23
+
24
+
25
+ def by_reset(df):
26
+ return df.assign(idx=df.reset_index().index)
27
+
28
+
29
+ def by_range(df):
30
+ return df.assign(idx=range(len(df)))
31
+
32
+
33
+ def by_np_arange(df):
34
+ return df.assign(idx=np.arange(len(df)))
35
+
36
+
37
+ def by_rangeindex(df):
38
+ return df.assign(idx=pd.RangeIndex(len(df)))
39
+
40
+
41
+ df = pd._testing.makeDataFrame()
42
+ t = benchit.timings([by_reset_reset, by_reset, by_range, by_np_arange, by_rangeindex],
43
+ [df.sample(n, replace=True, random_state=0)
44
+ for n in 10**np.arange(6)])
45
+ t.plot(logx=True, logy=True, figsize=(10, 6))
46
+ ```
47
+
48
+ ![イメージ説明](767c18490381bbbdd1506e0e05dde503.png)