私はこのようなデータフレームを持っています:
+------+------+------+
| index| ATR2 | ATR3 |
+------+------+------+
| 1 | 1 | 2 |
+------+------+------+
| 2 | 3 | 10 |
+------+------+------+
| 3 | 4 | 5 |
+------+------+------+
| 4 | 6 | 6 |
+------+------+------+
| 5 | 7 | 2 |
+------+------+------+
| 6 | 10 | 5 |
+------+------+------+
残りの値を取得するために行を追加し、次のデータフレームを取得するために列をインデックスとして配置したいと思います。
+------+------+
| ATR2 | ATR3 |
+------+------+
| 1 | 2 |
+------+------+
| 2 | 0 |
+------+------+
| 3 | 10 |
+------+------+
| 4 | 5 |
+------+------+
| 5 | 0 |
+------+------+
| 6 | 6 |
+------+------+
| 7 | 2 |
+------+------+
| 8 | 0 |
+------+------+
| 9 | 0 |
+------+------+
| 10 | 5 |
+------+------+
どうすればいいですか?
DataFrame.reindex
すべての値がATR2
列で一意である場合に使用します。
a = np.arange(df['ATR2'].min(), df['ATR2'].max() + 1)
df = df.set_index('ATR2').reindex(a, fill_value=0).reset_index()
print (df)
ATR2 ATR3
0 1 2
1 2 0
2 3 10
3 4 5
4 5 0
5 6 6
6 7 2
7 8 0
8 9 0
9 10 5
値が一意でない場合はmerge
、以下によってDataFrame
作成されたヘルパーによる左結合で使用できますnp.arange
。
print (df)
ATR2 ATR3
1 1 2
2 3 10
3 4 5
4 6 6
5 7 2
6 10 5
7 1 8
df1 = pd.DataFrame({'ATR2':np.arange(df['ATR2'].min(), df['ATR2'].max() + 1)})
df = df1.merge(df, how='left').fillna(0)
print (df)
ATR2 ATR3
0 1 2.0
1 1 8.0
2 2 0.0
3 3 10.0
4 4 5.0
5 5 0.0
6 6 6.0
7 7 2.0
8 8 0.0
9 9 0.0
10 10 5.0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加