这是我的代码:
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)
请告诉我怎么了?您可以在更改图片之前先查看数据框。
答案 0 :(得分:0)
我将所有这些列都设置为 一样。
您的数据表明这正是 尚未完成的事情。
根据要实现的目标,您有几种选择。
1。将所有非数字值转换为0
将pd.to_numeric
与errors='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)