gpt4 book ai didi

python - pandas 数据框用 nan 填充缺失的行

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:02 25 4
gpt4 key购买 nike

到数据框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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com