python - pandas 多索引数据框中重新索引子级别

标签 python pandas multi-index reindex

我正在尝试在一个子级别重新索引数据帧的多重索引。有问题的 df 看起来像这样:

test = pd.DataFrame({
  'day':[1,3,5],
  'position':['A', 'B', 'A'],
  'value':[20, 45, 3] 
})
test.set_index(['day', 'position'])

>>                  value
  day   position
   1      A          20
   3      B          45
   5      A          3

我的目标是重新索引day级别,将数据帧转换为以下内容:

>>>
              value
day position    
 1    A       20.0
 2    A       20.0
 3    A       20.0
 4    A       20.0
 5    A       3.0
 1    B       0.0
 2    B       0.0
 3    B       45.0
 4    B       45.0
 5    B       45.0

所以本质上我需要为每个头寸组将 day 重新索引为第 1 天到第 5 天,然后前向填充并用 0 填充。

最佳答案

用途:

<小时/>
df = (test.set_index(['day', 'position'])
          .unstack()
          .reindex(range(1,6))
          .ffill()
          .fillna(0)
          .stack()
          .sort_index(level=[1,0]))
print (df)
              value
day position       
1   A          20.0
2   A          20.0
3   A          20.0
4   A          20.0
5   A           3.0
1   B           0.0
2   B           0.0
3   B          45.0
4   B          45.0
5   B          45.0

关于python - pandas 多索引数据框中重新索引子级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301902/

相关文章:

python - 生成 1D 张量作为 2D 张量的行的唯一索引

python - 如何在数据框中生成缺失行

python - 如何替换 PySpark DataFrame 中的无穷大

python - 将 Dataframe 中的所有列转换为 MultiIndex Dataframe 中的单个二级索引

python - 来自数据帧序列的多索引数据帧

python - 子类化 Python 的 `property`

python - 筛选小于另一个日期的最大日期

python - 我应该如何使用 pyparsing 从 bool 表达式生成元素列表?

python - 按位置选择 Pandas 列

python - 如何使用 pandas 对行进行多重索引