【问题标题】:How do I get the remaining dataframe after using np.where in Pandas?在 Pandas 中使用 np.where 后如何获取剩余的数据帧?
【发布时间】:2019-04-03 12:11:52
【问题描述】:

我想要的(但不起作用):

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)]

【问题讨论】:

    标签: python pandas performance numpy dataframe


    【解决方案1】:

    这是来自熊猫的where

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

    另一种方式是reindex back 或.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
    

    【讨论】:

    • 有效,但比我试图避免的方法还要慢
    • @the_begging_beginner 我提供了另外两种方法
    猜你喜欢
    • 2022-01-07
    • 2020-11-20
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多