![](/img/trans.png)
[英]Remove rows in pandas dataframe after certain value (while for looping?)
[英]Remove rows in pandas dataframe after a certain value at max index
我有一個 pandas dataframe,費率如下所示:
import numpy as np
import pandas as pd
num = np.repeat(12, 3)
num1 = np.repeat(11, 3)
num2 = np.repeat(7, 2)
num3 = np.repeat(10, 2)
num4 = np.repeat(7, 3)
num5 = np.repeat(9, 5)
num6 = np.repeat(3, 4)
num7 = np.repeat(7, 4)
df = pd.DataFrame(columns= ['rate'])
df['rate'] = num
df = pd.concat([df, pd.DataFrame(num1, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num2, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num3, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num4, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num5, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num6, columns=['rate'])])
df = pd.concat([df, pd.DataFrame(num7, columns=['rate'])])
df = df.reset_index(drop = True)
values = (7,9)
可以有更多的 7 或 9。 我想在每次運行 7 或 9 的終點(最大索引)之后刪除 2 行。預期結果如下所示:
num = np.repeat(12, 3)
num1 = np.repeat(11, 3)
num2 = np.repeat(7, 2)
num3 = np.repeat(7, 3)
num4 = np.repeat(9, 3)
num5 = np.repeat(3, 2)
num6 = np.repeat(7, 4)
dd = pd.DataFrame(columns= ['rate'])
dd['rate'] = num
dd = pd.concat([dd, pd.DataFrame(num1, columns=['rate'])])
dd = pd.concat([dd, pd.DataFrame(num2, columns=['rate'])])
dd = pd.concat([dd, pd.DataFrame(num3, columns=['rate'])])
dd = pd.concat([dd, pd.DataFrame(num4, columns=['rate'])])
dd = pd.concat([dd, pd.DataFrame(num5, columns=['rate'])])
dd = pd.concat([dd, pd.DataFrame(num6, columns=['rate'])])
dd = dd.reset_index(drop = True)
有什么建議我該怎么做? 感謝您的時間和精力!
下面是使用 Pandas 移位方法的一種方法:
# Setup
max_indices = df[(df["rate"] != df["rate"].shift(-1)) & (df["rate"].isin([7, 9]))].index
index = df.index.to_list()
new_index = []
start = 0
# Build new index
for idx in max_indices:
new_index = new_index + index[start: idx + 1]
start = idx + 3
dd = df.loc[new_index, :].reset_index(drop=True)
然后:
print(dd)
# Output
rate
0 12
1 12
2 12
3 11
4 11
5 11
6 7
7 7
8 7
9 7
10 7
11 9
12 9
13 9
14 3
15 3
16 7
17 7
18 7
19 7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.