【发布时间】:2019-03-21 00:24:20
【问题描述】:
这是我的代码:
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)
请告诉我有什么问题吗?您可以在图片中更改之前看到数据框。
【问题讨论】:
-
您确定
event_0中的那些nan值是null 而不是字符串'nan'? -
显然 event_0 的值是 nan,而其他值是 NaN。我不知道为什么会这样,因为我将所有这些列都设为相同。所以我现在的解决方案是:
for col in df: if col.startswith('event'): df[col] = df[col].map(lambda x: re.sub("\D","",str(x))) df[col] = df[col].replace('', np.nan) df[col].fillna(0, inplace=True)
标签: python pandas nan series imputation