我有一个如下所示的pd.dataframe df
:
key_value a date b
value_01 1 03/17/2018 10
value_01 2 03/18/2018 12
value_01 3 03/19/2018 13
value_02 1 04/01/2018 24
value_02 2 04/02/2018 27
value_02 3 04/03/2018 33
value_03 1 03/17/2018 13
value_03 2 03/18/2018 17
value_03 3 03/19/2018 22
因此,现在基于key_value,
我想在每个键段的末尾添加说n
(现在为3)数量的空行,因此它应该类似于:
key_value a date b
value_01 1 03/17/2018 10
value_01 2 03/18/2018 12
value_01 3 03/19/2018 13
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
value_02 1 04/01/2018 24
value_02 2 04/02/2018 27
value_02 3 04/03/2018 33
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
value_03 1 03/17/2018 13
value_03 2 03/18/2018 17
value_03 3 03/19/2018 22
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
我曾尝试过基于grouby
使用lease
的方法,但无法弄清楚该怎么做。
谢谢您预先提供的所有帮助。
答案 0 :(得分:3)
这应该起作用:
首先找到值更改的行的索引,然后从底部插入NaN
。
l = df.index[(df.key_value != df.key_value.shift(-1)) == True].tolist()
a = [np.nan, np.nan, np.nan, np.nan]
for i in reversed([x+1 for x in l]):
for j in range(3):
df = pd.DataFrame(np.insert(df.values, i, values=a, axis=0))
df.columns = ['key_value','a', 'date', 'b']
输出:
key_value a date b
0 value_01 1 03/17/2018 10
1 value_01 2 03/18/2018 12
2 value_01 3 03/19/2018 13
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
5 NaN NaN NaN NaN
6 value_02 1 04/01/2018 24
7 value_02 2 04/02/2018 27
8 value_02 3 04/03/2018 33
9 NaN NaN NaN NaN
10 NaN NaN NaN NaN
11 NaN NaN NaN NaN
12 value_03 1 03/17/2018 13
13 value_03 2 03/18/2018 17
14 value_03 3 03/19/2018 22
15 NaN NaN NaN NaN
16 NaN NaN NaN NaN
17 NaN NaN NaN NaN