到数据框df1
df1=pd.DataFrame(data=[[1,2,3],[2,4,5],[3,6,7],[1,2,3],[1,4,5],[2,6,7]],columns=['day','d','c'],index=[32,32,32,44,55,55])
print(df1)
day d c
32 1 2 3
32 2 4 5
32 3 6 7
44 1 2 3
55 1 4 5
55 2 6 7
我想根据需要添加尽可能多的行,以便每个索引的列天数从 1 到 5。 从第一天开始,其他列应填充 NaN
df2=pd.DataFrame(data=[[1,np.nan,np.nan],[2,np.nan,np.nan],[3,2,3],[4,4,5],[5,6,7],
[1,np.nan,np.nan],[2,np.nan,np.nan],[3,np.nan,np.nan],[4,np.nan,np.nan],[5,2,3],
[1,np.nan,np.nan],[2,np.nan,np.nan],[3,np.nan,np.nan],[4,4,5],[5,6,7]],
columns=['day','d','c'],index=[32,32,32,32,32,44,44,44,44,44,55,55,55,55,55])
print(df2)
day d c
32 1 NaN NaN
32 2 NaN NaN
32 3 2.0 3.0
32 4 4.0 5.0
32 5 6.0 7.0
44 1 NaN NaN
44 2 NaN NaN
44 3 NaN NaN
44 4 NaN NaN
44 5 2.0 3.0
55 1 NaN NaN
55 2 NaN NaN
55 3 NaN NaN
55 4 4.0 5.0
55 5 6.0 7.0
最佳答案
用途:
N = 5
def f(x):
x = x.astype(float)
x.index = range(N + 1 - len(x), N + 1)
return x.reindex(range(1, N + 1))
df1 = df1.groupby(level=0)['d','c'].apply(f).rename_axis((None, 'day')).reset_index(level=1)
print (df1)
day d c
32 1 NaN NaN
32 2 NaN NaN
32 3 2.0 3.0
32 4 4.0 5.0
32 5 6.0 7.0
44 1 NaN NaN
44 2 NaN NaN
44 3 NaN NaN
44 4 NaN NaN
44 5 2.0 3.0
55 1 NaN NaN
55 2 NaN NaN
55 3 NaN NaN
55 4 4.0 5.0
55 5 6.0 7.0
关于python - pandas 数据框用 nan 填充缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48579238/