如何使用Pandas数据帧将2D数据集转换为3D数据集



我有一个热带气旋数据集,如下所示:TC数据集

我想根据列"TC_name"对数据集进行分组,即一个TC一个组,但"TC_name’在不同年份可能相同,并且同一TC可能会跨年度传播,因此groupby()可能不起作用。

我还试图逐行循环,找到"TC_name"的变化位置,在那里剪切数据集,为每个TC获得一个数据帧。然而,这给了我1000多个数据帧,我不知道如何在3D格式中表示这些2D信息。

我想multi index可能通过为每个TC分配一个高级别的index来工作,但我尝试了很多次都无法达到它。

下面提供了一个例子进行澄清:(我需要单独的3个热带气旋(

import pandas as pd
data = {'TC_name':['RITA','RITA','IDA','IDA','IDA','IDA','RITA','RITA','RITA'],
'Year':[2020,2020,2020,2020,2020,2021,2021,2021,2021]}
df = pd.DataFrame(data)
df
TC_name Year
0   RITA    2020
1   RITA    2020
2   IDA     2020
3   IDA     2020
4   IDA     2020
5   IDA     2021
6   RITA    2021
7   RITA    2021
8   RITA    2021

最好是得到这种格式,或者任何其他有效的3D数据结构表示。

TC_name    Year
1   1    RITA    2020
2    RITA    2020
2   1    IDA     2020
2    IDA     2020
3    IDA     2020
4    IDA     2021
3   1    RITA    2021
2    RITA    2021
3    RITA    2021

非常感谢你的帮助!

编辑

这是另一种可能性。我们重置索引以保持原始排序:

df = df.reset_index()

然后,我们在每个TC_name组中分配一个新的id:

df['id2'] = df.groupby('TC_name')['index'].transform(lambda x: pd.factorize(x)[0] + 1)

这里的中间输出:

ear>1
indexTC_nameid2
0122020年
345

相关内容

  • 没有找到相关文章

最新更新