Python 向数据帧添加常量列的更好方法

Python 向数据帧添加常量列的更好方法,python,pandas,Python,Pandas,当前,当我必须向现有数据帧添加常量列时,我会执行以下操作。对我来说,它似乎并不那么优雅(我乘以数据帧长度的部分)。想知道是否有更好的方法来做到这一点 import pandas as pd testdf = pd.DataFrame({'categories': ['bats', 'balls', 'paddles'], 'skus': [50, 5000, 32], 'sales': [500, 70

当前,当我必须向现有数据帧添加常量列时,我会执行以下操作。对我来说,它似乎并不那么优雅(我乘以数据帧长度的部分)。想知道是否有更好的方法来做到这一点

import pandas as pd

testdf = pd.DataFrame({'categories': ['bats', 'balls', 'paddles'],
                       'skus': [50, 5000, 32],
                       'sales': [500, 700, 90]})

testdf['avg_sales_per_sku'] = [testdf.sales.sum() / testdf.skus.sum()] * len(testdf)

您可以通过只提供一个数字来隐式填充该列

testdf['avg_sales_per_sku'] = testdf.sales.sum() / testdf.skus.sum() 
发件人:

插入标量值时,它将自然传播以填充 专栏


把分类平均数和总平均数混在一起,我觉得很困惑。您还可以使用:

testdf['avg_sales_per_sku'] = testdf.sales / testdf.skus
testdf['avg_agg_sales_per_agg_sku'] = testdf.sales.sum() / float(testdf.skus.sum())  # float is for Python2

>>> testdf
  categories  sales  skus  avg_sales_per_sku  avg_agg_sales_per_agg_sku
0       bats    500    50            10.0000                   0.253837
1      balls    700  5000             0.1400                   0.253837
2    paddles     90    32             2.8125                   0.253837