我有一些类似的数据:
#Simulate some data
d = {
"id": [1,1,1,1,1,2,2,2,2],
"action_order": [1,2,3,4,5,1,2,3,4],
"n_actions": [5,5,5,5,5,4,4,4,4],
"seed": ['1','2','3','4','5','10','11','12','13'],
"time_spent": [0.3,0.4,0.5,0.6,0.7,10.1,11.1,12.1,13.1]
}
data = pd.DataFrame(d)
我需要一个函数,它可以为每一行返回该行中两列(种子和花费的时间)的值以及组中所有前一行的值作为字典。我尝试使用apply函数如下,但是结果不是我所需要的。你知道吗
data \
.groupby(["profile_id"])[["artist_seed", "tlh"]] \
.apply(lambda x: dict(zip(x["artist_seed"], x["tlh"]))) \
.tolist()
data \
.groupby("profile_id")[["artist_seed", "tlh", "action_order"]] \
.apply(lambda x: dict(zip(list(x["artist_seed"]), list(x["tlh"]))))
新数据帧应如下所示:
id new_col
0 1 {u'1': 0.3}
1 1 {u'1': 0.3, u'2': 0.4}
2 1 {u'1': 0.3, u'3': 0.5, u'2': 0.4}
...
这个怎么样。你知道吗
此外,您可以修改.to_dict()方法的参数来更改输出dict样式,请参阅:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html
或者这就是你想要的:
您可以保持一个运行的
dict
,并在每个apply
迭代中返回最新版本的副本,每个组:相关问题 更多 >
编程相关推荐