首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas:如何根据多列的条件将值替换为np.nan

Pandas:如何根据多列的条件将值替换为np.nan
EN

Stack Overflow用户
提问于 2020-04-28 09:23:58
回答 3查看 572关注 0票数 2

这是我的数据框架。

代码语言:javascript
复制
I  A  B  C  D  E  F
1  9  4  0  T  F  F
2  0  5  1  S  X  J
3  1  8  0  G  G  J

以下是我的预期输出。我想替换A ==0中的if值,替换为D中的np.nan。

代码语言:javascript
复制
I  A   B   C   D   E   F
1  9   4   0   T   F   nan
2  0   5   1   nan X   J
3  1   8   0   G   G   nan

我想用A/B/C列的值替换D/E/F列上的值。例如,D列随A列的变化而变化。(A->D,B->E,C->F)

我尝试了这段代码,但没有改变值。

代码语言:javascript
复制
list1 = ['A', 'B', 'C']
list2 = ['D', 'E', 'F']

for i in list2:
    for j in list1:
        df[i] = np.where(df[j] == 0, np.nan, df[i])

对于下面的代码,运行良好。但是有很多列,所以我想使用list和for句子。

代码语言:javascript
复制
df['D'] = np.where(df.A == 0, np.nan, df.D)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-28 09:32:51

首先,我们使用zip从您的两个列表创建一个字典

代码语言:javascript
复制
replace_dict = dict(zip(list1,list2))

然后我们循环它来处理你的任务,

代码语言:javascript
复制
for k,v in replace_dict.items():
    df.loc[df[k] == 0, v] = np.nan

print(df)
   I  A  B  C    D  E    F
0  1  9  4  0    T  F  NaN
1  2  0  5  1  NaN  X    J
2  3  1  8  0    G  G  NaN

另一种方法是对列表使用np.where

代码语言:javascript
复制
df[list2] = np.where(df[list1].eq(0), np.nan,df[list2])

print(df)

   I  A  B  C    D  E    F
0  1  9  4  0    T  F  NaN
1  2  0  5  1  NaN  X    J
2  3  1  8  0    G  G  NaN
票数 3
EN

Stack Overflow用户

发布于 2020-04-28 09:36:16

让我们做吧

代码语言:javascript
复制
df.loc[:,'D':].mask(df.loc[:,'A':'C'].eq(0).values)
     D  E    F
0    T  F  NaN
1  NaN  X    J
2    G  G  NaN
df.loc[:,'D':]= df.loc[:,'D':].mask(df.loc[:,'A':'C'].eq(0).values)
票数 3
EN

Stack Overflow用户

发布于 2020-04-28 09:32:44

DataFrame.maskDataFrame.rename一起使用为:

代码语言:javascript
复制
df[list2] = df[list2].mask(df[list1].rename(columns=dict(zip(list1, list2))).eq(0))

print(df)
   I  A  B  C    D  E    F
0  1  9  4  0    T  F  NaN
1  2  0  5  1  NaN  X    J
2  3  1  8  0    G  G  NaN
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61471124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档