我有一个像这样的数据框:
+------+------+------+
| 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
与由 np.arange
创建的助手 DataFrame
进行左连接:
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
关于python - 如何在 python 中填充 pandas 数据框列中的剩余数值并作为索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52314867/