gpt4 book ai didi

python - 从 DataFrame 中选择属于同一系列的行的最后一次观察

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

假设我在 Python 中有一个类似于这个的 DataFrame:

df = pd.DataFrame.from_dict({
'0': ['monday', 1],
'1': ['monday', 5],
'2': ['monday', 2],
'3': ['tuesday', 1],
'4': ['tuesday', 3]
}, orient='index', columns=['day', 'value'])

我想提取每一天的最后一个观察/元素,例如由值列定义的,所以:df = df.sort_values(['day','value'])

如何在大型 DataFrame 上高效地做到这一点?所需效果的一个极其缓慢的例子是:

indices = []
for day in df['day'].unique():
indices.append(list(df[df['day'] == day].index)[-1])

df.loc[np.array(indices)]

产生:

    day value
1 monday 5
4 tuesday 3

我知道这个答案:select last observation from longitudinal data , 但它在 R 中。

最佳答案

添加drop_duplicates指定带有参数 last 的列 day,如果需要的话,默认天数排序创建 ordered categorical :

df = pd.DataFrame.from_dict({
'0': ['monday', 1, 4],
'1': ['monday', 5, 1],
'2': ['monday', 2, 0],
'3': ['tuesday', 1, 2],
'4': ['tuesday', 3, 3]
}, orient='index', columns=['day', 'value', 'value1'])
print (df)
day value value1
0 monday 1 4
1 monday 5 1
2 monday 2 0
3 tuesday 1 2
4 tuesday 3 3

categories=['monday','tuesday','wednesday','thursday','friday','saturday', 'sunday']
df['day'] = pd.Categorical(df['day'], categories=categories, ordered=True)
df = df.sort_values(['day','value']).drop_duplicates('day', keep='last')
print (df)
day value value1
1 monday 5 1
4 tuesday 3 3

关于python - 从 DataFrame 中选择属于同一系列的行的最后一次观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53517472/

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