首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别序列中缺少的日期并对其进行归因

如何识别序列中缺少的日期并对其进行归因
EN

Stack Overflow用户
提问于 2019-12-24 12:28:20
回答 2查看 46关注 0票数 0

我有一个dataframe,其中的列是按顺序排列的日期(比如11月份)。然而,我确实看到有一些缺失,因为他们没有数据,如下所示:

代码语言:javascript
复制
           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完成这项工作。

EN

回答 2

Stack Overflow用户

发布于 2019-12-24 12:41:58

将您的columns转换为DatetimeIndex,找到缺少的月份并填充它:

代码语言:javascript
复制
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)

或者,如果你能负担得起转置:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-12-24 12:43:23

将该列替换为下面的行。使用fillna()填充NaN。

代码语言:javascript
复制
pd.date_range('2019-11-01', periods=30, freq='D')
代码语言:javascript
复制
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')

用于重命名列的代码

代码语言:javascript
复制
data.columns = # list of Dates
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59463824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档