pandas - 扩展 DataFrame 的索引将新行的所有列设置为 NaN? [英] pandas - Extend Index of a DataFrame setting all columns for new rows to NaN?

查看:64
本文介绍了pandas - 扩展 DataFrame 的索引将新行的所有列设置为 NaN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有时间索引数据:

df2 = pd.DataFrame({ 'day': pd.Series([date(2012, 1, 1), date(2012, 1, 3)]), 'b' : pd.Series([0.22, 0.3]) })
df2 = df2.set_index('day')
df2
               b
 day             
2012-01-01  0.22
2012-01-03  0.30

扩展此数据框的最佳方法是什么,使其在 2012 年 1 月的每一天都有一行(比如说),其中所有列都设置为 NaN(这里只有 b) 我们没有数据的地方?

What is the best way to extend this data frame so that it has one row for every day in January 2012 (say), where all columns are set to NaN (here only b) where we don't have data?

所以想要的结果是:

               b
 day             
2012-01-01  0.22
2012-01-02   NaN
2012-01-03  0.30
2012-01-04   NaN
...
2012-01-31   NaN

非常感谢!

推荐答案

使用这个(从 pandas 1.1.3 开始):

Use this (current as of pandas 1.1.3):

ix = pd.date_range(start=date(2012, 1, 1), end=date(2012, 1, 31), freq='D')
df2.reindex(ix)

给出:

               b
2012-01-01  0.22
2012-01-02   NaN
2012-01-03  0.30
2012-01-04   NaN
2012-01-05   NaN
[...]
2012-01-29   NaN
2012-01-30   NaN
2012-01-31   NaN

对于旧版本的 Pandas,将 pd.date_range 替换为 pd.DatetimeIndex.

For older versions of pandas replace pd.date_range with pd.DatetimeIndex.

这篇关于pandas - 扩展 DataFrame 的索引将新行的所有列设置为 NaN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆