我有一个热带气旋数据集,如下所示: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)
这里的中间输出:
index | TC_name | ear>id2 | ||||
---|---|---|---|---|---|---|
0 | 1 | 2 | 2020年 | |||
3 | 4 | 5 |