我有一个如下所示的数据框,我需要在缺少或省略日期的地方插入行(请注意,这是每周的日期):
A B C
'alpha' 2006-01 12
'beta' 2006-02 4
'kappa' 2006-04 2
所需结果如下:
A B C
'alpha' 2006-01 12
'beta' 2006-02 4
'gamma' 2006-03 0
'kappa' 2006-04 2
能做到吗?
答案 0 :(得分:3)
使用to_datetime
,resample
每周YYYY-WW
固定NaN
值,以# Set index to datetime - based on yyyy-ww format (the '-1' makes weeks start Monday)
df.index = pd.to_datetime(df['B'] + '-1', format='%Y-%W-%w')
# Resample to weekly - Monday start
df_new = df.resample('W-MON').first().fillna(0)
# Correct format of 'B' column back to yyyy-ww
df_new['B'] = df_new.index.strftime('%Y-%W')
# Optional step to reset index
df_new.reset_index(drop=True, inplace=True)
print(df_new)
格式创建索引。这是指向python strftimes
A B C
0 'alpha' 2006-01 12.0
1 'beta' 2006-02 4.0
2 0 2006-03 0.0
3 'kappa' 2006-04 2.0
[出]
Bash
答案 1 :(得分:1)
具有足够填充功能的用户resample()。更新:
df['B'] = pd.to_datetime(df['B'])
df = df.set_index('B').resample('1D').asfreq().reset_index()
然后,您可以为每个特定列重新填写NA。