吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1147|回复: 8
收起左侧

[求助] python pandas表达式动态赋值的问题

[复制链接]
cqwcns 发表于 2021-1-3 20:24
本帖最后由 cqwcns 于 2021-1-3 20:27 编辑

python pandas中,“df_on_way.区域”这样的表达式是否可以通过变量动态修改。
以下面代码为例,如果“df_on_way.区域”可以通过“x.类型”动态修改,我根本不需要搞3个if。

类似这样。
x_type='区域'
df_on_way.x_type== x.主体


但不知道应该怎么实现?

[Python] 纯文本查看 复制代码
# 获得在途数
def func_get_on_way(x):
    if x.类型 == '区域':
        return df_on_way['区域'][
            (df_on_way.区域 == x.主体) & ((df_on_way.故障来源 == '10086客服受理') | (df_on_way.故障来源 == '自助排障'))].count()
    elif x.类型 == '网格':
        return df_on_way['区域'][(df_on_way.网格 == x.主体) & (
                (df_on_way.故障来源 == '10086客服受理') | (df_on_way.故障来源 == '自助排障'))].count()
    elif x.类型 == '装维人员':
        return df_on_way['区域'][(df_on_way.装维人员 == x.主体) & (
                (df_on_way.故障来源 == '10086客服受理') | (df_on_way.故障来源 == '自助排障'))].count()


微信图片_20210103202700.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lvcaolhx 发表于 2021-1-4 08:07
用groupby按“类型”分,然后遍历它
如:for name,group in student_list.groupby('年级'):  #年级列有高一,高二,高三
    df=student_list.groupby('年级').get_group(name)
    df.nsmallest(5,'总分',keep='all').to_excel(grade_excel, sheet_name=name+'-倒数前五')
 楼主| cqwcns 发表于 2021-1-4 08:37
已解决,我发现这样写是可以的。

[Python] 纯文本查看 复制代码
def func_get_on_way(x):
    return df_on_way[x.类型][
        (df_on_way[x.类型] == x.主体) & ((df_on_way.故障来源 == '10086客服受理') | (df_on_way.故障来源 == '自助排障'))].count()
 楼主| cqwcns 发表于 2021-1-4 08:38
即不用.。
而是用[],方括可以直接内放变量。
rsnodame 发表于 2021-1-4 08:53
用.取df的列算是pandas的语法糖吧,[]、.loc[]用法更正式
我好奇你传入的x是啥…………与其这么麻烦,或者改进一下数据结构?
 楼主| cqwcns 发表于 2021-1-4 11:33
rsnodame 发表于 2021-1-4 08:53
用.取df的列算是pandas的语法糖吧,[]、.loc[]用法更正式
我好奇你传入的x是啥…………与其这 ...

x是apply的行。

# 新增[EOMS在途
df_on_way_count['EOMS在途'] = df_on_way_count.apply(lambda x: func_get_EOMS(x), axis=1)
rsnodame 发表于 2021-1-4 16:23
cqwcns 发表于 2021-1-4 11:33
x是apply的行。

# 新增[EOMS在途列

哦大概明白意思了,是不是不同列之间要做运算?应该不需要apply吧
 楼主| cqwcns 发表于 2021-1-4 17:13
rsnodame 发表于 2021-1-4 16:23
哦大概明白意思了,是不是不同列之间要做运算?应该不需要apply吧

不同一个DataFrame。
rsnodame 发表于 2021-1-4 18:34
把俩df合并了再计算
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-16 15:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表