在熊猫中使用np.where后,如何获取剩余的数据帧?

时间:2019-04-03 12:11:53

标签: python pandas performance numpy dataframe

我想要什么(但不起作用)

df = np.where((df['cd_0'].values == 1) & (df['cd_1'].values == 1), df, np.nan)

请注意

的第二个参数中的 df
np.where(... , df, ...)

我想获取整个剩余的数据框。

在这种情况下,我在整个stackoverflow上进行了查找,而我看到的唯一情况是,它返回一个特定的数据框列。 这有效,但仅返回特定的列。我想要整个剩余的数据框:

有效,但不是我想要的:

df = np.where((df['cd_0'].values == 1) & (df['cd_1'].values == 1), df['cd_2'], np.nan)

这完全符合我的要求,但由于速度原因,我不想使用此方法。

df= df[(df['cd_0'].values == 1) & (df['cd_1'].values == 1)]

1 个答案:

答案 0 :(得分:1)

这是where来自熊猫

df=df.where((df['cd_0'] == 1) & (df['cd_1'] == 1))

另一种方法是返回reindex.loc

df[(df['cd_0'] == 1) & (df['cd_1'] == 1)].reindex(df.index)

df.loc[~((df['cd_0'] == 1) & (df['cd_1'] == 1)),:]=np.nan