A B
0 1 1
1 1 2
2 1 3
3 1 4
4 1 3
5 1 6
6 1 7
需要根据B列筛选,条件为目标列的后值大于前值,把index=4的这行去掉。
请问该怎么写切片语句?谢谢!
A B
0 1 1
1 1 2
2 1 3
3 1 4
4 1 3
5 1 6
6 1 7
需要根据B列筛选,条件为目标列的后值大于前值,把index=4的这行去掉。
请问该怎么写切片语句?谢谢!
df.drop(df.index[1:][df.B[1:]<df.B[:-1]])
需要根据B列筛选,条件为目标列的后值大于前值,把index=4的这行去掉。
>>> import pandas as pd
>>> df = pd.DataFrame(list(range(1,8)),columns=['B'])
>>> df.B[4]=3
>>> df['A']=1
>>> df
B A
0 1 1
1 2 1
2 3 1
3 4 1
4 3 1
5 6 1
6 7 1
>>> df[(df.B[1:]<df.B[:-1])] # @zoujj 的方法是错的
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
df[(df.B[1:]<df.B[:-1])]
……
pandas.core.indexing.IndexingError: Unalignable boolean Series key provided
>>> df.drop(df.index[1:][df.B[1:]<df.B[:-1]])
B A
0 1 1
1 2 1
2 3 1
3 4 1
5 6 1
6 7 1
>>>
import pandas as pd
df = pd.DataFrame(list(range(1,8)),columns=['B'])
df.B[4]=3
df['A']=1
df[df["B"].shift(1).fillna(method="bfill")<df["B"]]
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
想了一种办法,增加一列C,用B列去第一位,增加最后一位
C列的值为:[2, 3, 4, 3, 6, 7, 7]
然后取C列大于等于B列的行,就是你要的值