首页 > 解决方案 > 像 excel 一样更新 pandas Dataframe 中的列

问题描述

在 python 中请求 excel 功能有点尴尬,但我需要帮助找到一种有效的方法来做到这一点,这样我才能在这个项目中脱离 excel。

对我来说,excel 的一个优势是一个表格,其中所有列都根据另一列中的输入进行更新。我想这样做的一种方法是在函数中:

def update_columns(x, y):
    mt = x * y
    sm = x + y
    sb = x - y
    dv = x / y
    cols = {'x' : x, 'y' : y, 'mt' : mt, 'sm' : sm, 'sb' : sb, 'dv' : dv}
    return cols

df = pd.DataFrame(columns=['x', 'y', 'mt', 'sm', 'sb', 'dv'])
new_vals = [(10, 5), (15, 3), (40, 4)]

for i in new_vals:
    x, y = i
    cols = update_columns(x, y)
    df = df.append(cols, ignore_index=True)

然而,我想有一种更优雅、更 Pythonic 的方式来解决这个问题。是否可以在列表或字典中使用嵌入式 lambda 函数?或者一些集合函数,比如命名元组,或者一个数据类/属性类?有人可以提出一些建议吗?

标签: pythonexcelpandas

解决方案


您定义update_columns函数的方式,您可以(并且应该)只传递整个列:

new_vals = np.array(new_vals)

df = pd.DataFrame(update_columns(new_vals[:,0], new_vals[:,1]))

输出:

    x  y   mt  sm  sb    dv
0  10  5   50  15   5   2.0
1  15  3   45  18  12   5.0
2  40  4  160  44  36  10.0

推荐阅读