【发布时间】:2020-10-26 01:32:03
【问题描述】:
我有一个数据框,需要插入缺失的行数据。这是数据框:
df = pd.DataFrame({
'name': ['Jim', 'Jim', 'Jim', 'Jim', 'Mike', 'Mike', 'Mike', 'Mike', 'Mike',
'Polo', 'Polo', 'Polo', 'Polo', 'Tom', 'Tom', 'Tom', 'Tom'],
'From_num': [80, 68, 751, 'Started', 32, 68, 126, 49, 'Started', 105, 68, 76, 'Started', 251, 49, 23, "Started"],
'To_num':[99, 80, 68, 751, 105, 32, 68, 126, 49, 324, 105, 114, 76, 96, 115, 49, 23],
})
name From_num To_num
0 Jim 80 99
1 Jim 68 80
2 Jim 751 68
3 Jim Started 751
4 Mike 32 105
5 Mike 68 32
6 Mike 126 68
7 Mike 49 126
8 Mike Started 49
9 Polo 105 324
10 Polo 68 105
11 Polo 76 114 #Missing record between line 10 and 11
12 Polo Started 76
13 Tom 251 96
14 Tom 49 115 # Missing record between 13 and 14
15 Tom 23 49
16 Tom Started 23
每组(人名)的数据记录在每一行的'From_num'到'To_num'是连续的,并且从下到上对齐,例如Jim: 'Started' -> 751, 751->68, 68->80, 80->99;迈克的模式相同。但是 Polo ad Tom 有一些缺失的数据,例如我希望在第 10 行和第 11 行之间插入一行: 114 -> 105 以使整个记录是连续的。和 Tom 一样,在 13 和 14 之间插入一行:115 -> 251。我尝试使用循环条件进行编码,但失败了,所以如果您有任何想法,请提供帮助。请不要直接插入那些丢失的记录,因为这是一个简单的例子。非常感谢您的帮助!希望问题很清楚。预期结果如下:
df_expected:
name From_num To_num
0 Jim 80 99
1 Jim 68 80
2 Jim 751 68
3 Jim Started 751
4 Mike 32 105
5 Mike 68 32
6 Mike 126 68
7 Mike 49 126
8 Mike Started 49
9 Polo 105 324
10 Polo 68 105
11 Polo 114 68 # New Inserted line
12 Polo 76 114
13 Polo Started 76
14 Tom 251 96
15 Tom 115 251 # New Inserted line
16 Tom 49 115
17 Tom 23 49
18 Tom Started 23
【问题讨论】:
标签: pandas loops dataframe if-statement group-by