用熊猫数据框中另一列的值在多列中填充Na

Shijith

熊猫版本0.23.4,python版本3.7.1
我有一个数据框df如下

df = pd.DataFrame([[0.1, 2, 55, 0,np.nan],
                   [0.2, 4, np.nan, 1,99],
                   [0.3, np.nan, 22, 5,88],
                   [0.4, np.nan, np.nan, 4,77]],
                   columns=list('ABCDE'))
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   NaN  1  99.0
2  0.3  NaN  22.0  5  88.0
3  0.4  NaN   NaN  4  77.0

我想在列替换娜值B,并C在列'A”值。

预期输出为

     A   B      C    D      E 
0   0.1  2.0    55.0   0    NaN 
1   0.2  4.0    0.2    1    99.0 
2   0.3  0.3    22.0   5    88.0 
3   0.4  0.4    0.4    4    77.0

我已尝试使用fillnafill沿着axis 0,但其不给预期的输出,(其填充从上述列)

df.fillna(method='ffill',axis=0, inplace = True)
    A    B     C   D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0  55.0  1  99.0
2  0.3  4.0  22.0  5  88.0
3  0.4  4.0  22.0  4  77.0  

df.fillna(method='ffill',axis=1, inplace = True)

输出:NotImplementedError:

也尝试过

df[['B','C']] = df[['B','C']].fillna(df.A)
output:
    A    B     C   D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   NaN  1  99.0
2  0.3  NaN  22.0  5  88.0
3  0.4  NaN   NaN  4  77.0

试图填补所有娜在BC0使用inplace,但是这也没有给预期的输出

df[['B','C']].fillna(0,inplace=True)
output:
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   NaN  1  99.0
2  0.3  NaN  22.0  5  88.0
3  0.4  NaN   NaN  4  77.0

0如果分配回相同的子集,则填充到数据帧的片段将起作用

df[['B','C']] = df[['B','C']].fillna(0)
output:
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   0.0  1  99.0
2  0.3  0.0  22.0  5  88.0
3  0.4  0.0   0.0  4  77.0

1)如何在给定的数据帧中填充列中的na值BC使用中的值A
2)同样,在数据帧的子集上使用fillna时,为什么嵌线不起作用。
3)如何ffill沿着行(实现)?

耶斯列尔

1)如何使用给定数据帧中A列的值填充BandC列中的na值?

由于未实现按列替换,因此可能的解决方案是双重转置:

df[['B','C']] = df[['B','C']].T.fillna(df['A']).T
print (df)
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   0.2  1  99.0
2  0.3  0.3  22.0  5  88.0
3  0.4  0.4   0.4  4  77.0

要么:

m = df[['B','C']].isna()
df[['B','C']] = df[['B','C']].mask(m, m.astype(int).mul(df['A'], axis=0))
print (df)
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0   0.2  1  99.0
2  0.3  0.3  22.0  5  88.0
3  0.4  0.4   0.4  4  77.0

2)同样,在数据帧的子集上使用fillna时,为什么嵌线不起作用。

我认为原因是链接分配,需要分配回来。

3)如何沿行填充(已实现)?

如果分配回来,则用向前填充工作不错的方法代替:

df1 = df.fillna(method='ffill',axis=1)
print (df1)
     A    B     C    D     E
0  0.1  2.0  55.0  0.0   0.0
1  0.2  4.0   4.0  1.0  99.0
2  0.3  0.3  22.0  5.0  88.0
3  0.4  0.4   0.4  4.0  77.0

df2 = df.fillna(method='ffill',axis=0)
print (df2)
     A    B     C  D     E
0  0.1  2.0  55.0  0   NaN
1  0.2  4.0  55.0  1  99.0
2  0.3  4.0  22.0  5  88.0
3  0.4  4.0  22.0  4  77.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用pandas数据框中的另一列内容填充NaN列

在熊猫中填充另一列中某一列的缺失值

根据熊猫中另一个数据框的相似值在数据框中填充一列

更改熊猫数据框中的一列的值

用一列中的值索引熊猫数据框

用其他列中的值填充我的数据框中的一列

通过排除熊猫另一列中的特定值来填充一列

根据熊猫中数据框的另一列的值添加一列

用另一张表中的另一列替换数据框中的值

如何从另一列的截断值填充数据框中的一列

根据另一列中的相同值组合熊猫数据框列中的文本值

用另一列中的值替换数据框中的占位符值

用熊猫数据框中的一些默认值填充每个列组合的值

使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

根据另一列中的值将值添加到熊猫数据框的一列中

在pandas数据框中添加一列以NA填充

从熊猫数据框中的一列移动到多列或多列到一列

用另一列的条件填充一列并移动熊猫中的值

如何更改熊猫数据框中某个类别的另一列中的值?

根据熊猫数据框中另一列的最后一个值填充列

给定另一列的值替换熊猫数据框中的值

使用另一个数据框中的指定值填充一列

从熊猫数据框中另一列中的值创建变量

为另一列中的唯一值的熊猫数据框值赋值

R - 基于另一列中的字符串用其他列的值填充数据框的列

如何调节一列的循环以填充熊猫数据框中的另一列值

Pandas df:用另一列中的特定值填充新列中的值(多列條件)

根据与熊猫数据框的另一列值的部分匹配获取多列值

从另一列列表中的特定值填充一个数据框列