返回

python——这是基于其他列中的条件使用pandas更新列的有效方法吗

发布时间:2022-03-21 18:56:37 495
# node.js

这是基于其他列中的条件使用pandas更新列的有效方法吗?我希望推广一个更新函数,该函数将移动高斯值,我很难使用lambda,因为有多个列可能是条件。同样,apply也有问题,因为我无法让变量以它想要的形式出现,不过老实说,我可能会在这方面花更多时间。

问题陈述:我应该如何根据另一列中的值来更新大熊猫数据帧,以便在可接受的速度参数内运行这些函数?请给出一个完整的例子,如果可能的话,使用我的“傻_系列_生成器”来确保我们保持相同的问题案例。谢谢

import random
import pandas


def silly_series_generator():
    # requires import of random and pandas
    ret = []
    ret.append(r.choice(['X', 'Y', 'Z']))
    for i in range(9):
        ret.append(random.gauss(0,1))
    return pandas.Series(ret, list("ABCDEFGHIJ"))


def silly_update(df, condition_col, condition_value, target_col, mean, sd = .1):
    # requires import of random and pandas
    effected_cells = df[condition_col] == condition_value[0]
    x = df[effected_cells][target_col] + r.gauss(mean, sd)
    df[target_col].update(x)
    return df


def run_test():
    # requires import of random and pandas
    # requires functions: silly_series_generator and silly_update
    rows = []
    for i in range(50):
        rows.append(silly_series_generator())
    original_df = pd.DataFrame(rows)
    print('original_df',original_df['B'].mean())
    updated_df = silly_update(original_df, 'A', 'X', 'B', 1)
    print('updated_df', updated_df['B'].mean())

if __name__ == "__main__":
    run_test()
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像