基于多索引将值插入数据FRMAE

2024-05-08 11:44:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引数据帧,如下所示:

df = pandas.DataFrame({"index": ["a", "a", "a", "b", "b", "b"], "id": [1,2,3,4,5,6], "name": ["jim", "jim", "jim", "bob", "bob", "bob"], "date":['12/5/1999','12/6/1999','18/4/2000','12/4/2006','14/9/2007','16/4/2008']}).set_index("index")

它代表发生在不同时间的事件。我想补充一下 一个新的列,date\u order,它根据事件发生的日期,向每个索引中的每一行依次递增一个新值。 每个事件都发生了。也就是说,每个人都将按照事件发生的顺序分配一个日期顺序值,从1开始,在每个较旧的事件中递增。你知道吗

这就是我想要的结局。你知道吗

index   id  name    date        date_order
a       1   jim     12/5/1999   3
a       2   jim     12/6/1999   2
a       3   jim     18/4/2000   1
b       4   bob     12/4/2006   3
b       5   bob     14/9/2007   2
b       6   bob     16/4/2008   1

我首先在这个data['date_order'] = 1中添加了一个日期顺序列,然后我想我可以使用lambda函数和map函数用迭代器递增。你知道吗

这对我来说不太好。你知道吗

在正确的方向踢做这将是非常感谢。 谢谢。你知道吗


Tags: 数据函数nameiddataframepandasdfdate
1条回答
网友
1楼 · 发布于 2024-05-08 11:44:23

使用具有重复值的索引不是一个好主意。如果您不为DataFrame对象调用.set_index("index"),下面是解决方案。你知道吗

import pandas as pd
df = pd.DataFrame({"index": ["a", "a", "a", "b", "b", "b"], "id": [1,2,3,4,5,6], "name": ["jim", "jim", "jim", "bob", "bob", "bob"], "date":['12/5/1999','12/6/1999','18/4/2000','12/4/2006','14/9/2007','16/4/2008']})
df["date_order"] = df.groupby(df["index"]).date.transform(pd.Series.rank, ascending=False)

相关问题 更多 >