我有一个dataframe,其中的列是按顺序排列的日期(比如11月份)。然而,我确实看到有一些缺失,因为他们没有数据,如下所示:
2019-11-01 2019-11-02 2019-11-03 2019-11-05 2019-11-8
abc 5 3 54 9 9
bcl 20 12 22 21 17在上面的数据框中,像4号、6号、7号这样的日期丢失了。然后,我还希望作为不带值的列(NaN)引入。
这里我只给了8号,但是这个月的所有日期都应该是列的。
有没有人可以帮我用python完成这项工作。
发布于 2019-12-24 12:41:58
将您的columns转换为DatetimeIndex,找到缺少的月份并填充它:
df.columns = pd.to_datetime(df.columns)
month_range = pd.date_range(min(df.columns),max(df.columns),freq="D")
missing = [i for i in month_range if not i in df.columns]
df = pd.concat([df, pd.DataFrame(columns=missing)],axis=1, sort=False)
df = df[sorted(df.columns)]
print (df)或者,如果你能负担得起转置:
df.columns = pd.to_datetime(df.columns)
month_range = pd.date_range(min(df.columns),max(df.columns),freq="D")
print (df.T.reindex(month_range).T)
2019-11-01 2019-11-02 2019-11-03 2019-11-04 2019-11-05 2019-11-06 2019-11-07 2019-11-08
abc 5 3 54 NaN 9 NaN NaN 9
bcl 20 12 22 NaN 21 NaN NaN 17发布于 2019-12-24 12:43:23
将该列替换为下面的行。使用fillna()填充NaN。
pd.date_range('2019-11-01', periods=30, freq='D')DatetimeIndex(['2019-11-01', '2019-11-02', '2019-11-03', '2019-11-04',
'2019-11-05', '2019-11-06', '2019-11-07', '2019-11-08',
'2019-11-09', '2019-11-10', '2019-11-11', '2019-11-12',
'2019-11-13', '2019-11-14', '2019-11-15', '2019-11-16',
'2019-11-17', '2019-11-18', '2019-11-19', '2019-11-20',
'2019-11-21', '2019-11-22', '2019-11-23', '2019-11-24',
'2019-11-25', '2019-11-26', '2019-11-27', '2019-11-28',
'2019-11-29', '2019-11-30'],
dtype='datetime64[ns]', freq='D')用于重命名列的代码
data.columns = # list of Dateshttps://stackoverflow.com/questions/59463824
复制相似问题