数据框中过去可能缺少月份的值

时间:2015-06-11 21:17:43

标签: python pandas time-series

假设我有一个如下所示的DataFrame:

X

我想为上一个月(或过去Month, Gender, State, Value, Last Value 2010-01, M, S1, 10, NaN 2010-02, M, S1, 20, 10 2010-05, M, S1, 26, NaN (there is no 2010-04 for M, S1) 2010-03, F, S2, 11, NaN 个月)添加另一列性别和状态,如果存在,即:

groupby(['Gender', 'State'])

我知道我必须shift()但是{{1}}不起作用,因为它只按行数移动数据,它不知道句点本身(如果缺少一个月)。< / p>

1 个答案:

答案 0 :(得分:0)

我找到了一种做到这一点的方法,对此不太满意:

full_index = []
for g in all_genders:
  for s in all_states:
    for m in all_months:
      full_index.append((g, s, m))
df = df.set_index(['Gender', 'State', 'Month'])
df = df.reindex(full_index) # fill in all missing values

基本上,不是处理数据中缺少的行,而是只创建缺少的行,shift()按预期工作。

即:

df['Last Value'] = df.shift(1).Value
...
df = df.reset_index() # go back to tabular format from this hierarchy