首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将几列引用的函数应用到熊猫数据中?

如何将几列引用的函数应用到熊猫数据中?
EN

Stack Overflow用户
提问于 2020-06-21 19:10:26
回答 1查看 56关注 0票数 1

我正在尝试应用函数,这是指2列熊猫的数据。函数所引用的一个列有字符串变量,其他整数。

我得到了一个以下错误ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

下面是我已经尝试过的例子

代码语言:javascript
复制
def sd2_offshore(gas_rate,platform):
    if platform=='Stage2':
       if 0<gas_rate<900:
          return 5
       elif gas_rate>900:
          return 6
       else:
          return 0
     else:
        return 0

df2['Offshore SD2']=df2.apply(lambda row : sd2_offshore(df2['Gas_Rate_avg'],df2['Platform']))

df2['Platform']包含字符串值。

df2['Gas_Rate_avg']包含整数值

提前谢谢!

编辑

添加以下数据示例

代码语言:javascript
复制
Index Platform Gas_Rate_avg
0     Stage2   300
1     Stage2   0
2     Stage2   1100
3     Stage2   1200
4     Stage1   500

预期产出:

代码语言:javascript
复制
Index Platform  Gas_Rate_avg    Offshore_SD2
0     Stage2    300             5.00
1     Stage2    0               0.00
2     Stage2    1100            6.00
3     Stage2    1200            6.00
4     Stage1    500             0.00
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 09:01:26

你在申请中错过了axis=1。试着这样做:

代码语言:javascript
复制
def sd2_offshore(row): 
    if row["Platform"] == "Stage2": 
        if 0<row['Gas_Rate_avg']<900: 
            return 5 
        elif row['Gas_Rate_avg']>900:
            return 6
        else: 
            return 0 
    else:
        return 0 
    
df2['Offshore SD2'] = df2.apply(lambda row : sd2_offshore(row), axis=1)
df2

输出(df2):

代码语言:javascript
复制
      Platform  Gas_Rate_avg    Offshore SD2
Index           
0     Stage2    300            5
1     Stage2    0              0
2     Stage2    1100           6
3     Stage2    1200           6
4     Stage1    500            0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62503288

复制
相关文章

相似问题

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