我正在从CSV文件中读取数据,该文件包含位于爱尔兰海岸附近的浮标网络的天气数据。它是一个具有每个浮标每小时读数的时间序列数据集。我想创建一个3D结构,其中每个浮标都有一个数据框,其中包含天气状况列,并按日期和时间编制索引。
我希望能够通过以下语法访问数据:
df['column']['anotherColumn']
我知道熊猫已经弃用了Panel类,但是我不知道如何做到这一点。
任何帮助,将不胜感激,谢谢!
最佳答案
不建议使用熊猫Panel
,而建议使用具有多级索引的DataFrame
。引用pandas documentation:
分层/多层索引非常令人兴奋,因为它打开了
进行一些非常复杂的数据分析和处理的大门,
尤其适用于处理高维数据。本质上,它
使您可以存储和处理任意数量的数据
低维数据结构(例如Series(1d)和
DataFrame(2d)。
这是一个带有MultiIndex的DataFrame的快速示例,用于表示三维数据集:
In [1]: multi_index = pd.MultiIndex.from_arrays([
...: ['buoy1', 'buoy1', 'buoy2', 'buoy2', 'buoy3', 'buoy3', 'buoy4', 'buoy4'],
...: ['wind', 'water', 'wind', 'water', 'wind', 'water', 'wind', 'water'],
...: ])
In [2]: df = pd.DataFrame(np.random.randn(3, 8), columns=multi_index)
In [3]: df
Out[3]:
buoy1 buoy2 buoy3 buoy4
wind water wind water wind water wind water
0 1.082442 -0.148975 -0.372837 0.075599 1.681150 0.910194 0.157064 0.183764
1 -0.019759 1.782505 -1.092751 0.324313 -2.217671 0.349224 1.085250 -0.715607
2 -1.308382 -0.994506 -0.306874 0.517858 1.356037 -0.024291 0.085105 -0.073061
随后,您可以像这样将数据切片切成2D部分:
In [4]: df['buoy3']
Out[4]:
wind water
0 1.681150 0.910194
1 -2.217671 0.349224
2 1.356037 -0.024291
您可以像这样将数据集切成一维部分(即单列):
In [5]: df['buoy3']['water']
Out[5]:
0 0.910194
1 0.349224
2 -0.024291
Name: water, dtype: float64