我在Day列中有以下重复的df:
Day Value
0 0 1.0
1 NaN 1.6
2 NaN 1.0
3 NaN 1.7
4 NaN 6.0
5 0 9.0
6 NaN 7.8
7 NaN 2.5
8 NaN 1.2
9 NaN 3.4
...我想在每一行中fillna递增+1。从而获得以下输出:
Day Value
0 0 1.0
1 1 1.6
2 2 1.0
3 3 1.7
4 4 6.0
5 0 9.0
6 1 7.8
7 2 2.5
8 3 1.2
9 4 3.4
...我试过df.Day.fillna(value = dfs.iloc[-1]['Day] + 1, inplace = True)
但它不起作用。
发布于 2020-06-29 20:31:54
使用cumsum计算累计和。
df.fillna(1, inplace=True)
df['Day'] = df['Day'].groupby((df['Day']- df['Day'].shift()!=0).cumsum()).cumsum()
df
Day Value
0 0.0 1.0
1 1.0 1.6
2 2.0 1.0
3 3.0 1.7
4 4.0 6.0
5 0.0 9.0
6 1.0 7.8
7 2.0 2.5
8 3.0 1.2
9 4.0 3.4发布于 2020-06-29 20:22:04
您可以使用此函数(edit:import numpy as np before):
>>> def func(iterable):
... counter = 1
... out = []
... for item in iterable:
... if item == 0:
... out.append(0)
... counter = 1
... elif np.isnan(item) == True:
... out.append(counter)
... counter += 1
... return out给定数据帧x:
>>> x
Day
0 0.0
1 NaN
2 NaN
3 NaN
4 NaN
5 0.0
6 NaN
7 NaN
8 NaN
9 NaN
>>> x['Day'] = func(x['Day'])
>>> x
Day
0 0
1 1
2 2
3 3
4 4
5 0
6 1
7 2
8 3
9 4https://stackoverflow.com/questions/62637754
复制相似问题