Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于多索引将值插入数据FRMAE_Python_Pandas - Fatal编程技术网

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

Python 基于多索引将值插入数据FRMAE,python,pandas,Python,Pandas,我有一个多索引数据框,如下所示: 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("in

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

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
我首先添加了一个date\u order列this
data['date\u order']=1
,然后我想我可以使用一个使用lambda函数和map函数的迭代器来递增

这对我来说不太合适

如果能朝着正确的方向踢一脚,我们将不胜感激。
谢谢。

使用具有重复值的索引不是一个好主意。如果您不调用
。请为
DataFrame
对象设置索引(“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)

使用具有重复值的索引不是一个好主意。如果您不调用
。请为
DataFrame
对象设置索引(“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)