python - Pandas :如何填补缺失的年、周列?

标签 python pandas

我有一个数据框 [Year] 和 [Week] 列有时会丢失。我有另一个数据框,它是一个供引用的日历,我可以从中获取这些缺失值。如何使用 pandas 填充这些缺失的列?

我尝试使用 reindex 来设置它们,但我收到以下错误

ValueError:缓冲区的维数错误(预期为 1,得到 2)

import pandas as pd

d1 = {'Year': [2019,2019,2019,2019,2019], 'Week':[1,2,4,6,7], 'Value': 
[20,40,60,75,90]}
d2 = {'Year': [2019,2019,2019,2019,2019,2019,2019,2019,2019,2019], 'Week':[1,2,3,4,5,6,7,8,9,10]}

df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)

df1 = df1.set_index(['Year', 'Week'])
df2 = df2.set_index(['Year', 'Week'])

df1 = df1.reindex(df2, fill_value=0)

print(df1)

最佳答案

你应该添加 index 所以 df2.index

df1.reindex(df2.index,fill_value=0)
Out[851]: 
           Value
Year Week       
2019 1        20
     2        40
     3         0
     4        60
     5         0
     6        75
     7        90

df2.index.difference(df1.index)
Out[854]: 
MultiIndex(levels=[[2019], [3, 5]],
           labels=[[0, 0], [0, 1]],
           names=['Year', 'Week'],
           sortorder=0)

更新

s=df1.reindex(df2.index)
s[s.bfill().notnull().values].fillna(0)
Out[877]: 
           Value
Year Week       
2019 1      20.0
     2      40.0
     3       0.0
     4      60.0
     5       0.0
     6      75.0
     7      90.0

关于python - Pandas :如何填补缺失的年、周列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54445811/

相关文章:

python - 使用 .loc 选择多索引级别的重复值

python - 使用 pandas.read_sql 有条件跳过文件

python - Pandas:有条件的 2 列的累积和

python - Selenium - 删除和追加类值

python - 将Column1值转换为标题,将Column2值转换为pandas中的值

Pandas dataFrame 追加并添加新列

python - For循环确定加权平均python

python - 你如何在 numpy 数组中查找和保存重复的行?

python - 使用 pandas.Dataframe 时添加列名删除行

python - Django 查询集与 distinct 和 exclude 一起