gpt4 book ai didi

python - Pandas 多用户时间插值

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:06 25 4
gpt4 key购买 nike

我有一个数据框集,如下所示:

time  user value
0 R 3
1 S 5
2 J 6

我想使用 pandas 来同步每个用户的时间,这样我最终会得到一个如下所示的数据框:

time  user value
0 R 3
0 S 5
0 J 6
1 S 5
1 R 3
1 J 6
2 J 6
2 R 3
2 S 5

换句话说,我想使用 pandas 来同步每个用户的时间序列(给定特定用户之前的值)。如果没有先前的值,它只会回填用户的第一个值。所以例如J 直到 2 才出现,所以在时间 0 和 1 我们将 J 存储为 6。我是 pandas 的新手,但很高兴这样做,我读过有关对齐、插值等的内容,但我没有看到任何东西专注于像这样的多用户数据。将不胜感激如何做到这一点。

最佳答案

您可以先尝试set_indexuser 列,然后 groupby带有自定义函数 f,它使用 reindex , sort_values , fillnacombine_first 。最后你可以reset_index并对列重新排序:

print df
time user value
0 0 R 3
1 1 S 5
2 2 J 6

df = df.set_index(['user'])

def f(x):
#print x
x = x.reindex(df.index)
x = x.sort_values('value')
x['time'] = x['time'].fillna(method='ffill')
x['value'] = x['value'].combine_first(df['value'])
return x

df = df.groupby(level=0, sort=False).apply(f).reset_index(level=0, drop=True).reset_index()
df = df[['time','user','value']]
print df
time user value
0 0 R 3
1 0 S 5
2 0 J 6
3 1 S 5
4 1 R 3
5 1 J 6
6 2 J 6
7 2 R 3
8 2 S 5

关于python - Pandas 多用户时间插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com