'Create a list by the index of the column values meet the condition python
I have a dataframe with two columns ['A', 'B']. The columns are sorted already. I want to find a list of A values based on every first n times of 100 of column B and add min and max in the list. And n is fixed with 3 times.
d={'A': [15,16, 17,19,20,21,25,26,27,28,29,30], 'B': [25,90,101,137,140,190,202,207,290,304,355,367]
df=pd.DataFrame(data=d)
The end result is to create a list=[15,17,25,28,30] based on another list of B values:[25, 101,202,304,367].
I previously set colA=[min(df.A)], and I'm trying to append the other three items based on the index of the colB list. And add the max column A value as the last item in the list colA.
So back to the other 3 items in colB, I'll need to do in the range(3) iteration. So when n=0, the first item is the first value that closed to (n+1)*100 but >(n+1)*100, same thing for the rest two values.
Solution 1:[1]
If I understand you problem right, you can use df.groupby:
out = df.groupby(df["B"] // 100)["A"].first().to_list() + [df["A"].max()]
print(out)
Prints:
[15, 17, 25, 28, 30]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Andrej Kesely |
