使用布尔掩码拆分后获取 NaN 值
Getting NaN Values after Splitting with Boolean Masking
我正在尝试根据特定列上的值将一个巨大的数据帧拆分成更小的数据帧。
我基本上做的是创建一个 for 循环,然后将每个数据帧分配给一个字典。
然而,当我从字典中调用项目时,除了我用于拆分的 cell_id 值外,所有值都是 NaN。
为什么会这样?
此外,如果有更实用的方法来做到这一点,我将不胜感激。
df_sliced_dict = {}
for cell in ex_df['cell_id'].unique():
df_sliced_dict[cell] = ex_df[ex_df.loc[:, ['cell_id']] == cell]
替换
df_sliced_dict[cell] = ex_df[ex_df.loc[:, ['cell_id']] == cell]
和
df_sliced_dict[cell] = ex_df[ex_df['cell_id'] == cell]
在 for 循环中,它将按预期工作。
问题是 ex_df.loc[:, ['cell_id']]
(或 ex_df[['cell_id']]
)是一个 DataFrame,而不是一个 Series,而您需要一个 Series 来构造您的布尔掩码。
我正在尝试根据特定列上的值将一个巨大的数据帧拆分成更小的数据帧。
我基本上做的是创建一个 for 循环,然后将每个数据帧分配给一个字典。
然而,当我从字典中调用项目时,除了我用于拆分的 cell_id 值外,所有值都是 NaN。
为什么会这样?
此外,如果有更实用的方法来做到这一点,我将不胜感激。
df_sliced_dict = {}
for cell in ex_df['cell_id'].unique():
df_sliced_dict[cell] = ex_df[ex_df.loc[:, ['cell_id']] == cell]
替换
df_sliced_dict[cell] = ex_df[ex_df.loc[:, ['cell_id']] == cell]
和
df_sliced_dict[cell] = ex_df[ex_df['cell_id'] == cell]
在 for 循环中,它将按预期工作。
问题是 ex_df.loc[:, ['cell_id']]
(或 ex_df[['cell_id']]
)是一个 DataFrame,而不是一个 Series,而您需要一个 Series 来构造您的布尔掩码。