鱼C论坛

 找回密码
 立即注册
查看: 924|回复: 3

[已解决]apply(fun(x,y))用法

[复制链接]
发表于 2021-9-12 18:56:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def t_or_w(x,b_or_t): 
    for a,b in zip(x,b_or_t): 
            #print(a)
            #print(b)
            if '千' in str(a): 
                #print(1)
                b=int(b)*1000
                #print(b)
                return b
            elif '万' in str(a):
                b=int(b)*10000
                #print(b)
                return b

df.apply(t_or_w(df['salary'],df['bottom']),axis=1) 

怎么把df.apply(t_or_w(df['salary'],df['bottom']),axis=1)的结果更新到列表里,即想要实现df.bottom=df.apply(t_or_w(df['salary'],df['bottom']),axis=1)
最佳答案
2021-9-13 13:04:21


不知道是不是你想要的代碼:
import pandas as pd
import numpy as np

salary = [13, 5, 8, 11, 9]
values = ["千", "萬", "千", "千", "萬"]

df = pd.DataFrame([list(i) for i in zip(*[salary, values])], columns = ['A', 'B'])
print(df, end = "\n\n")

def funct(arr: list):
    a, b = arr
    if b == "千":
        return a*1000
    else:
        return a*10000

data = df.apply(funct, axis=1)
print(data)
    A  B
0  13  千
1   5  萬
2   8  千
3  11  千
4   9  萬

0    13000
1    50000
2     8000
3    11000
4    90000
dtype: int64
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-13 10:46:42 | 显示全部楼层
先去看看apply的基本用法,基本例子,不要自己瞎写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 12:28:08 | 显示全部楼层
试试:
def t_or_w(x, a_name, b_name):
    a = x[a_name]
    b = x[b_name]
    if '千' in str(a):
        x[b_name] = int(b)*1000 
    elif '万' in str(a):
        x[b_name] = int(b)*10000
    return x
df.apply(t_or_w, axis=1, args=('salary','bottom'))

会直接改变原来的 df
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 13:04:21 | 显示全部楼层    本楼为最佳答案   


不知道是不是你想要的代碼:
import pandas as pd
import numpy as np

salary = [13, 5, 8, 11, 9]
values = ["千", "萬", "千", "千", "萬"]

df = pd.DataFrame([list(i) for i in zip(*[salary, values])], columns = ['A', 'B'])
print(df, end = "\n\n")

def funct(arr: list):
    a, b = arr
    if b == "千":
        return a*1000
    else:
        return a*10000

data = df.apply(funct, axis=1)
print(data)
    A  B
0  13  千
1   5  萬
2   8  千
3  11  千
4   9  萬

0    13000
1    50000
2     8000
3    11000
4    90000
dtype: int64
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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