首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代数据帧并根据条件替换值

迭代数据帧并根据条件替换值
EN

Stack Overflow用户
提问于 2019-02-14 06:36:34
回答 1查看 537关注 0票数 1

我对python (来自R)很陌生,我不知道如何在python中迭代数据帧。我在下面提供了一个数据框架和一份可能的“干预”清单。我要做的是搜索数据框架中的“干预”列,如果干预在"intervention_list“中,则将值替换为”是干预“,但如果"NaN”替换为“不干预”。

如有任何指导或帮助,将不胜感激。

代码语言:javascript
复制
import pandas as pd
intervention_list = ['Intervention 1', 'Intervention 2']
df = pd.DataFrame({'ID':[100,200,300,400,500,600,700],
                  'Intervention':['Intervention 1', 'NaN','NaN','NaN','Intervention 2','Intervention 1','NaN']})
print(df)

我希望已完成的数据框架如下所示:

代码语言:javascript
复制
df_new = pd.DataFrame({'ID':[100,200,300,400,500,600,700],
                  'Intervention':['Yes Intervention', 'No Intervention','No Intervention','No Intervention','Yes Intervention','Yes Intervention','No Intervention']})
print(df_new)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 06:38:18

在熊猫中最好避免循环,因为速度慢,所以使用numpy.whereSeries.isnaSeries.notna所缺少的测试值作为矢量化解决方案:

代码语言:javascript
复制
df['Intervention'] = np.where(df['Intervention'].isna(),'No Intervention','Yes Intervention')

或者:

代码语言:javascript
复制
df['Intervention'] = np.where(df['Intervention'].notna(),'Yes Intervention','No Intervention')

如果NaN是字符串,则由==Series.eq进行测试。

代码语言:javascript
复制
df['Intervention']=np.where(df['Intervention'].eq('NaN'),'No Intervention','Yes Intervention')

但如果需要在列表中进行测试,请使用numpy.select

代码语言:javascript
复制
m1 = df['Intervention'].isin(intervention_list)
m2 = df['Intervention'].isna()

#if not match m1 or m2 create default None
df['Intervention'] = np.select([m1, m2],
                              ['Yes Intervention','No Intervention'],
                              default=None)
代码语言:javascript
复制
#if not match m1 or m2 set original value column Intervention
df['Intervention'] = np.select([m1, m2],
                              ['Yes Intervention','No Intervention'],
                              default=df['Intervention'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54684480

复制
相关文章

相似问题

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