python - 如何使用 NAN 填充具有相同列表中先前数据帧的相同值的数据帧
问题描述
我有一个数据帧列表,A
其中大多数是 NAN 数据帧,其中一些不是,我想用列表中先前数据帧(不包含 NAN)的相同值填充所有 NAN 数据帧。这是一个小例子:
A=[]
data = {'set_of_numbers': [1,2,3,4,4,5,9]}
df1 = pd.DataFrame(data,columns=['set_of_numbers'])
data2 = {'set_of_numbers': [0,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]}
df2 = pd.DataFrame(data2,columns=['set_of_numbers'])
data3 = {'set_of_numbers': [3,3,3,8,4,5,8]}
df3 = pd.DataFrame(data3,columns=['set_of_numbers'])
data4 = {'set_of_numbers': [0,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]}
df4 = pd.DataFrame(data4,columns=['set_of_numbers'])
A.append(df1)
A.append(df2)
A.append(df3)
A.append(df4)
A
我希望在第二张图片中显示输出,其中所有 nan 数据帧都填充了先前数据帧的值
解决方案
如果我理解正确:
for i, df in enumerate(A):
df[df.isnull()] = A[i-1]
或者,如果您希望更改以前非 nan df 的 dtype:
for i, df in enumerate(A):
if df.isnull().all().all():
A[i] = A[i-1].copy()
根据 OP 的问题编辑:
for i, df in enumerate(A):
if df.isnull().any().any():
A[i] = A[i-1].copy()
输出:
[ set_of_numbers
0 1
1 2
2 3
3 4
4 4
5 5
6 9, set_of_numbers
0 1
1 2
2 3
3 4
4 4
5 5
6 9, set_of_numbers
0 3
1 3
2 3
3 8
4 4
5 5
6 8, set_of_numbers
0 3
1 3
2 3
3 8
4 4
5 5
6 8]
推荐阅读
- javascript - 向测验 api 发出获取请求时出错
- android - FAILURE:通过“flutter build appbundle”命令构建项目时构建失败并出现异常
- azure - 我没有在 azure redis 控制台上进行会话
- asp.net - SignalR 的 messageId 值
- javascript - 当表单使用 React 具有所有值时,无法重新启用提交按钮
- javascript - fireEvent.click 在进行反应测试时不会对状态进行任何更改
- powerbi - 到数据点之间的增量变化
- shell - 如何从slave连接到redis中的master
- dependency-injection - 将自定义提供者的配置参数传递给模块
- javascript - 如何使用从 node.js 中的其他系统获取的驱动器 API 在驱动器中上传文件