我有一个具有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()进行比较,但未达到所需的输出。
答案 0 :(得分:2)
您可以将fillna
由布尔Series
创建的新mask
与cumsum
一起使用:
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
答案 1 :(得分:0)
函数fillna是您的解决方案:
dataframe['yourColumn'] = dataframe['yourColumn'] .fillna( 1 , inplace=True)
此外,您可以输入想要替换nan值的任何值。 例如,您可以设置均值:
dataframe['yourColumn']= dataframe['yourColumn'].fillna(dataset['yourColumn'] .mean(), inplace=True)