用零个python熊猫填充nan

时间:2018-10-16 12:55:56

标签: python pandas nan

这是我的代码:

for col in df:
    if col.startswith('event'):
        df[col].fillna(0, inplace=True)
        df[col] = df[col].map(lambda x: re.sub("\D","",str(x)))

我有0到10个事件列“ event_0,event_1,...” 当我用此代码填充nan时,它将所有事件列下的所有nan单元格填充为0,但不会更改event_0(该选择的第一列),并且也由nan填充。

我使用以下代码从“事件”列中创建了这些列:

event_seperator = lambda x: pd.Series([i for i in 
str(x).strip().split('\n')]).add_prefix('event_')
df_events = df['events'].apply(event_seperator)
df = pd.concat([df.drop(columns=['events']), df_events], axis=1)

enter image description here

请告诉我怎么了?您可以在更改图片之前先查看数据框。

1 个答案:

答案 0 :(得分:0)

  

我将所有这些列都设置为   一样。

您的数据表明这正是 尚未完成的事情。

根据要实现的目标,您有几种选择。

1。将所有非数字值转换为0

pd.to_numericerrors='coerce'一起使用:

df[col] = pd.to_numeric(df[col], errors='coerce').fillna(0)

2。将字符串('nan')或空(NaN)值替换为0

使用pd.Series.replace,后跟以前的方法:

df[col] = df[col].replace('nan', np.nan).fillna(0)