gpt4 book ai didi

python - 从 pandas df 返回第一个和最后一个项目的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:10 24 4
gpt4 key购买 nike

我正在尝试实现一种更有效的方法来返回 pandas df 的第一项和最后一项,其中等于特定值。我将在下面发布我当前的方法,但可能有更有效的方法。

import pandas as pd

d = ({
'X' : ['X','Y','X','Z','X'],
'Y' : [2,5,3,5,1],
})

df = pd.DataFrame(data=d)

所以我想返回 Y 中的第一项和最后一项,其中 X == X

这是我的尝试,但我认为可能有更有效的方法。

df = df[df['X'] == 'X']
df_first = df.drop_duplicates(subset=['X'], keep = 'first')
df_last = df.drop_duplicates(subset=['X'], keep = 'last')
df1 = pd.concat([df_first, df_last])

# my expected output
df1
X Y
0 X 2
4 X 1

最佳答案

使用 query(或者任何选择方法,真的)和 iloc,这应该很简单。

df.query('X == "X"').iloc[[0, -1]]

X Y
0 X 2
4 X 1

假设 Y 中没有 NaN。否则,链dropna:

df.query('X == "X"').dropna(subset=['Y']).iloc[[0, -1]]

X Y
0 X 2
4 X 1

另一个使用 agg 的选项,我觉得这很有趣。 如果您的“Y”有 NaN,这很有用。

df.loc[df['Y'].where(df['X'] == 'X').agg(
['first_valid_index', 'last_valid_index'])]

X Y
0 X 2
4 X 1

关于python - 从 pandas df 返回第一个和最后一个项目的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763439/

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