python - 使用 numpy.ndarray 填充数据框中的缺失值
问题描述
我有一个数据框和 nparray 如下
import pandas as pd
import numpy as np
dic = {'A': {0: 0.9, 1: "NaN", 2: 1.8, 3: "NaN"},
'C': {0: 0.1, 1: 2.8, 2: -0.1, 3: 0.5},
'B': {0: 0.7, 1: -0.6, 2: -0.1, 3: -0.1},}
df=pd.DataFrame(dic)
print(df)
A C B
0 0.9 0.1 0.7
1 NaN 2.8 -0.6
2 1.8 -0.1 -0.1
3 NaN 0.5 -0.1
a = np.array([1.,2.])
a
array([1., 2.])
如何用 nparray 中的值填充 A 列中缺失的 (NaN) 值?我想根据数组的顺序依次填充列,所以第一个数组元素进入 1A,第二个进入 3A。
解决方案
用于numpy.tile
通过重复元素来创建数组a
df['A'].replace('NaN', np.nan, inplace = True)
len_tile = math.ceil(df['A'].isnull().sum()/len(a))
non_null_a = np.tile(a, len_tile)
然后使用 `loc' 使用数组填充 NaN,
df.loc[df['A'].isnull(), 'A'] = non_null_a
A C B
0 0.9 0.1 0.7
1 1.0 2.8 -0.6
2 1.8 -0.1 -0.1
3 2.0 0.5 -0.1
注意:对于您提供的虚拟 df,只需使用数组a
替换缺失值即可。我使用的代码考虑了 NaN 多于数组长度的情况。
推荐阅读
- docker - Logentries Docker container will not start
- regex - How to parse every match of sed command
- r - SQL 语句不适用于 RStudio 中的 flex_dashboard (Knit)
- spring-boot - Unable to mock dependency with SpringBoot and Spock Framework
- min - TypeError:“numpy.float64”对象在规范化期间不可调用
- r - 如何更改 R Shiny 应用程序中“radioButtons”UI 元素的默认选定值?
- c++ - class modify via set/get methods
- android - 错误引用触发的 Viewpager 操作
- android - 当软键盘打开时,BottomSheetDialogFragment 扩展超出状态栏
- c++ - CGAL::Surface_mesh_parameterization:按原顺序将顶点写入off