对于一个excel
文件,用pandas
读取后,我得到一个数据框,如下所示:
type sub_type num
0 a a1 1
1 NaN NaN 2
2 NaN a2 3
3 b b1 4
4 NaN NaN 5
5 NaN b2 6
6 NaN NaN 7
7 c c1 8
8 NaN NaN 9
9 NaN NaN 10
10 NaN c2 11
如何获得这样的预期结果?谢谢。
type sub_type num
0 a a1 1
1 a a2 2
2 a a2 3
3 b b1 4
4 b b2 5
5 b b2 6
6 b b3 7
7 c c1 8
8 c c2 9
9 c c3 10
10 c c2 11
答案 0 :(得分:2)
您可以在固定列中使用fillna的正向填充:
df['ColumnNameORIndex'] = df['ColumnNameORIndex'].fillna(method='ffill')
或完整的dataFrame中:
df = df.fillna(method='ffill')
答案 1 :(得分:2)
是的,我们可以做到,但并不容易
df.type=df.type.ffill()# first ffill with type
s=df.groupby([df.type,df.sub_type.notnull().cumsum()]).cumcount().add(df.sub_type.str[1:].astype(float).ffill(),fill_value=0).astype(int).astype(str).radd(df.type)
# then we create the sub group with the notnull value to find the sub id
# and get the number of values within each subgroup add the first value sub_id
df.sub_type.fillna(s,inplace=True)
df
type sub_type num
0 a a1 1
1 a a2 2
2 a a2 3
3 b b1 4
4 b b2 5
5 b b2 6
6 b b3 7
7 c c1 8
8 c c2 9
9 c c3 10
10 c c2 11