Pandas Select 行从列中的特定起始值开始到结束
Pandas Select Rows Start to End with Specific Starting Value in Column
这很简单,但我还没有找到答案。我有一个数据框 'df1',看起来像这样:
year 5
0 1948 -99.99
1 1949 -99.99
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
而且,我只需要 select 以 'year' 列 == 1950 开始的行,然后到行的末尾(在本例中为“1952”)。
我在下面尝试过,但我只得到“假”、“真”,但当 'yearstart' = 1950 时我只得到“真”。所以,如果 'yearstart' == 1950,我得到以下信息。我不确定如何执行 yearstart 并将所有数据提取到行的末尾。
yearstart = 1950
df2 = [df1.year==yearstart]
我明白了 -
[0 False
1 False
2 True
3 False
4 False
我需要的是这个:
df2 =
year 5
0 1950 -1.74
1 1951 0.17
2 1952 -0.93
试试 idxmax
和 iloc
:
>>> df.iloc[df['year'].eq(1950).idxmax():]
year 5
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
>>>
如果年份是排序的,或者如果您希望所有年份大于或等于 1950,您可以使用 query
:
df.query('year >= 1950')
输出:
year 5
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
df2 = df1[df1['year'] >= 1950]
这很简单,但我还没有找到答案。我有一个数据框 'df1',看起来像这样:
year 5
0 1948 -99.99
1 1949 -99.99
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
而且,我只需要 select 以 'year' 列 == 1950 开始的行,然后到行的末尾(在本例中为“1952”)。
我在下面尝试过,但我只得到“假”、“真”,但当 'yearstart' = 1950 时我只得到“真”。所以,如果 'yearstart' == 1950,我得到以下信息。我不确定如何执行 yearstart 并将所有数据提取到行的末尾。
yearstart = 1950
df2 = [df1.year==yearstart]
我明白了 -
[0 False
1 False
2 True
3 False
4 False
我需要的是这个:
df2 =
year 5
0 1950 -1.74
1 1951 0.17
2 1952 -0.93
试试 idxmax
和 iloc
:
>>> df.iloc[df['year'].eq(1950).idxmax():]
year 5
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
>>>
如果年份是排序的,或者如果您希望所有年份大于或等于 1950,您可以使用 query
:
df.query('year >= 1950')
输出:
year 5
2 1950 -1.74
3 1951 0.17
4 1952 -0.93
df2 = df1[df1['year'] >= 1950]