Python 中是否有与 tsset 和 tsfill 等效的代码?

oce*_*h96 1 python stata python-3.x pandas

我想知道 Python 中是否有一个等效的代码,它提供了与Stata 中的tsset和相同的功能tsfill, full。

从Stata手册中,对的描述tsset如下:

tsset 将内存中的数据声明为时间序列

从Stata手册中,对的描述tsfill, full如下:

tsfill用于使用tsset包含缺失值的新观测值来填补时间序列数据中的空白和面板数据中的空白。例如,可能观察到timevar= 1, 3, 5, 6, ... . . , 22 存在。tsfill将为timevar= 2 和timevar= 4创建包含所有缺失值的观察值。

示例数据:

data = {'date': ['2014-05-01','2014-05-01','2014-05-01','2014-05-01',
         '2014-05-02','2014-05-02','2014-05-02','2014-05-03',
         '2014-05-03','2014-05-03'],'id':[1, 2, 3, 4, 1,
         2, 3, 1, 2, 4],'obs': [10, 5, 7, 3, 2,4, 3, 8, 6, 11]}

df = pd.DataFrame(data, columns = ['date', 'id','obs'])
df.index = df1['date']
del df['date']

df

            id  obs
date               
2014-05-01   1   10
2014-05-01   2    5
2014-05-01   3    7
2014-05-01   4    3
2014-05-02   1    2
2014-05-02   2    4
2014-05-02   3    3
2014-05-03   1    8
2014-05-03   2    6
2014-05-03   4   11
Run Code Online (Sandbox Code Playgroud)

在Stata中,您将使用tsset id date将数据声明为时间序列,然后将tsfill, full数据转换为以下内容:

iddate2014-05-02 的4 和2014-05-03 的id3date现在出现在数据框中

           id  obs
date               
2014-05-01   1   10
2014-05-01   2    5
2014-05-01   3    7
2014-05-01   4    3
2014-05-02   1    2
2014-05-02   2    4
2014-05-02   3    3
2014-05-02   4    .
2014-05-03   1    8
2014-05-03   2    6
2014-05-03   3    .
2014-05-03   4    11
Run Code Online (Sandbox Code Playgroud)

Python 中是否有等效的代码来执行与 Stata 相同的输出?

小智 5

以下对我有用:

data = {'date': ['2014-05-01','2014-05-01','2014-05-01','2014-05-01',
         '2014-05-02','2014-05-02','2014-05-02','2014-05-03',
         '2014-05-03','2014-05-03'],'id':[1, 2, 3, 4, 1,
         2, 3, 1, 2, 4],'obs': [10, 5, 7, 3, 2,4, 3, 8, 6, 11]}

df = pd.DataFrame(data, columns = ['date', 'id','obs'])

result = df.set_index(['id','date']).unstack(fill_value='.').stack().sort_index(level=1).reset_index()  
result = result.set_index('date')

In [1]: result
Out[1]: 
            id obs
date              
2014-05-01   1  10
2014-05-01   2   5
2014-05-01   3   7
2014-05-01   4   3
2014-05-02   1   2
2014-05-02   2   4
2014-05-02   3   3
2014-05-02   4   .
2014-05-03   1   8
2014-05-03   2   6
2014-05-03   3   .
2014-05-03   4  11
Run Code Online (Sandbox Code Playgroud)