数据帧中的 HDFStore 输出不是系列

HDFStore output in dataframe not series

我想将读入的两个表存储在数据框中。

我正在将 h5 文件读入我的代码:

with pd.HDFStore(directory_path) as store:
    self.df = store['/raw_ti4404']
    self.hr_df = store['/metric_heartrate']

self.df 被存储为数据框,但 self.hr_df 被存储为系列。

我用同样的方式称呼它们,我不明白为什么一个是数据框而另一个是系列。这可能与数据的存储方式有关:

任何有关如何将 metric_heartrate 存储为数据框的帮助都将不胜感激。

很可能 metric_heartrate 存储为系列。

演示:

生成样本DF:

In [123]: df = pd.DataFrame(np.random.rand(10, 3), columns=list('abc'))

In [124]: df
Out[124]:
          a         b         c
0  0.404338  0.010642  0.686192
1  0.108319  0.962482  0.772487
2  0.564785  0.456916  0.496818
3  0.122507  0.653329  0.647296
4  0.348033  0.925427  0.937080
5  0.750008  0.301208  0.779692
6  0.833262  0.448925  0.553434
7  0.055830  0.267205  0.851582
8  0.189788  0.087814  0.902296
9  0.045610  0.738983  0.831780

In [125]: store = pd.HDFStore('d:/temp/test.h5')

让我们将 a 列存储为系列:

In [126]: store.append('ser', df['a'], format='t')

让我们存储一个只包含一列的 DataFrame - a:

In [127]: store.append('df', df[['a']], format='t')

正在从 HDFStore 读取数据:

In [128]: store.select('ser')
Out[128]:
0    0.404338
1    0.108319
2    0.564785
3    0.122507
4    0.348033
5    0.750008
6    0.833262
7    0.055830
8    0.189788
9    0.045610
Name: a, dtype: float64

In [129]: store.select('df')
Out[129]:
          a
0  0.404338
1  0.108319
2  0.564785
3  0.122507
4  0.348033
5  0.750008
6  0.833262
7  0.055830
8  0.189788
9  0.045610

修复 - 读取系列并将其转换为 DF:

In [130]: store.select('ser').to_frame('a')
Out[130]:
          a
0  0.404338
1  0.108319
2  0.564785
3  0.122507
4  0.348033
5  0.750008
6  0.833262
7  0.055830
8  0.189788
9  0.045610