我可以访问HDF5数据库并从中导入数据。该数据有2个索引,日期和位置。假设在初始修改之后,DataFrame处于此结构中,沿着列的沿着日期索引和沿着行的深度。
+----+-------------+--------------+--------------+......+--------------+
| -- | 2014-01-01 | 2014-01-02 | 2014-01-03 | .... | 2014-04-10 |
+----+-------------+--------------+--------------+......+--------------+
| 1m | 10.9 | 15.6 | 10.3 | .... | 9.90 |
+----+-------------+--------------+--------------+......+--------------+
| 2m | 10.7 | 15.4 | 10.5 | .... | 10.1 |
+----+-------------+--------------+--------------+......+--------------+
| 3m | 10.5 | 15.2 | 10.7 | .... | 10.3 |
+----+-------------+--------------+--------------+......+--------------+
| 4m | 10.3 | 15.0 | 10.9 | .... | 10.5 |
+----+-------------+--------------+--------------+......+--------------+
| 5m | 10.1 | 14.8 | 11.1 | .... | 10.7 |
+----+-------------+--------------+--------------+......+--------------+
我接下来要做的是制作一个表格,其中包含每个深度的最小值的日期。使用上表中的可见数据,新表应该包含以下值:
+----+-------------+
| 1m | 2014-04-10 |
+----+-------------+
| 2m | 2014-04-10 |
+----+-------------+
| 3m | 2014-04-10 |
+----+-------------+
| 4m | 2014-01-01 |
+----+-------------+
| 5m | 2014-01-01 |
+----+-------------+
在此之后,我应该能够通过使用DataFrame.mode()函数找到具有最大低值的日期。这应该返回 2014-04-10 。
我目前解决这个问题的尝试没有给出预期的结果。我是大熊猫的业余爱好者,我的主要困境是用列索引替换值。任何帮助将不胜感激。
答案 0 :(得分:3)
使用idxmin
In [1092]: df.idxmin(axis=1)
Out[1092]:
1m 2014-04-10
2m 2014-04-10
3m 2014-04-10
4m 2014-01-01
5m 2014-01-01
dtype: object
In [1093]: df
Out[1093]:
2014-01-01 2014-01-02 2014-01-03 2014-04-10
1m 10.9 15.6 10.3 9.9
2m 10.7 15.4 10.5 10.1
3m 10.5 15.2 10.7 10.3
4m 10.3 15.0 10.9 10.5
5m 10.1 14.8 11.1 10.7
而且,如果您的深度不是索引,则可以使用set_index
In [1107]: df
Out[1107]:
depth 2014-01-01 2014-01-02 2014-01-03 2014-04-10
0 1m 10.9 15.6 10.3 9.9
1 2m 10.7 15.4 10.5 10.1
2 3m 10.5 15.2 10.7 10.3
3 4m 10.3 15.0 10.9 10.5
4 5m 10.1 14.8 11.1 10.7
In [1108]: df.set_index('depth').idxmin(axis=1)
Out[1108]:
depth
1m 2014-04-10
2m 2014-04-10
3m 2014-04-10
4m 2014-01-01
5m 2014-01-01
dtype: object