python - 如何在 python 中填充 pandas 数据框列中的剩余数值并作为索引?

标签 python pandas dataframe indexing

我有一个像这样的数据框:

+------+------+------+
| 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/

相关文章:

python - 列表中最小元素到最大元素的距离(在列表内)

python - 如何以 fortran 中连续零可以写为 n*0 的格式声明数组?

python - 如何生成 gettext 复数形式表达式的示例?用Python?

Pandas 1.0.1 - 如何使用包含切片器的列表通过 MultiIndex 索引 DataFrame

python - pandas to_sql() 错误 - 超出了准备语句每个 session 20 MB 的内存限制

python - 如何获得每组超过 X 次的连续相同单词的平均值?

python - 如何在 Windows 上使用 Python 删除 git 存储库

python - pandas - 列变量的绘图分布

python - 已弃用的 Pandas.Panel 的替代方案是什么

python - 带有 MultiIndex : exclude level values 的 Pandas 数据框