首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件的Pandas DataFrame中的值替换

基于条件的Pandas DataFrame中的值替换
EN

Stack Overflow用户
提问于 2020-04-29 13:23:27
回答 2查看 77关注 0票数 0

假设我有一个df数据框架,我想遍历列df['Social Distancing Advisory'],并将str "sah"替换为"1""sip"替换为"0"

我确实知道,通常不鼓励使用Pandas DataFrames来迭代DataFrames循环,但是为了理解,假设我想这样做。

代码语言:javascript
复制
import pandas as pd 

df = pd.read_excel('/Users/Arthur/Desktop/COVID-RA/state_data.xlsx')

for row in df['Social Distancing Advisory']:

  if df['Social Distancing Advisory'] == 'sah':
    df['Social Distancing Advisory'].replace('sah','1')
    
  if df['Social Distancing Advisory'] == 'sip':    
    df['Social Distancing Advisory'].replace('sip','0')

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

编辑

效率最低的方法(不建议使用sip ):在两列上循环,如果满足条件,则手动替换每个值,如果它们是sipsah,则为-that

代码语言:javascript
复制
for row in df['Social Distancing Advisory']:

   if row == 'sah':
      row = "1"

   elif row == "sip":
      row = "0"

df.iloc布尔索引是

  1. 最有效的方法

代码语言:javascript
复制
df.iloc[df['Social Distancing Advisory'] == 'sah', 'Social Distancing Advisory'] = '1'
df.iloc[df['Social Distancing Advisory'] == 'sip', 'Social Distancing Advisory'] = '0'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-29 13:44:04

您不需要迭代来替换字符串。下面是一个例子。

代码语言:javascript
复制
    import pandas as pd 
    df = pd.read_excel('/Users/Arthur/Desktop/COVID-RA/state_data.xlsx')
    df['Social Distancing Advisory'] = df['Social Distancing Advisory'].replace('sah',1)
    df['Social Distancing Advisory'] = df['Social Distancing Advisory'].replace('sip',0)
    print(df)
票数 1
EN

Stack Overflow用户

发布于 2020-04-29 13:50:59

您可以得到ValueError,因为df['Social Distancing Advisory'] == 'sah'语句给出了一系列布尔值--值与'sah'False匹配的索引的True。这正是错误消息所读取的内容。

下面的代码可以通过提供所需更改的映射来使用pd.Series.replace方法解决问题

代码语言:javascript
复制
import pandas as pd 

df = pd.read_excel('/Users/Arthur/Desktop/COVID-RA/state_data.xlsx')

df['Social Distancing Advisory'] = df['Social Distancing Advisory'].replace({
    "sah": "1",
    "sip": "0"
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61502845

复制
相关文章

相似问题

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