繁体   English   中英

在数据框的列中填充连续NAN

[英]Fill Consecutive NANs in a column of a dataframe

我有一个具有C列的数据框,我想用相同的数字填充连续的空白,因为以后我需要将该行分组。

例如

A B C
 1 2 Nan
 1 2 Nan
 1 2 3
 1 2 Nan
 1 2 Nan

我想要的输出是这样的

A B C
1 2 1
1 2 1
1 2 3
1 2 2
1 2 2

我尝试使用shift()进行比较,但未达到所需的输出。

您可以使用fillna由boolean mask创建的新Seriescumsum

df['C'] = df['C'].fillna(df['C'].notnull().cumsum() + 1)

print (df)
   A  B    C
0  1  2  1.0
1  1  2  1.0
2  1  2  3.0
3  1  2  2.0
4  1  2  2.0

详细说明

print (df['C'].notnull().cumsum())
0    0
1    0
2    1
3    1
4    1
Name: C, dtype: int32

函数fillna是您的解决方案:

dataframe['yourColumn'] = dataframe['yourColumn'] .fillna( 1 , inplace=True)

此外,您可以放置​​任何要替换nan值的值。 例如,您可以设置均值:

dataframe['yourColumn']= dataframe['yourColumn'].fillna(dataset['yourColumn'] .mean(), inplace=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM