目前,当我必须向现有数据框添加常量列时,我会执行以下操作。对我来说,似乎并不是那么优雅(我乘以数据帧长度的部分)。想知道是否有更好的方法来做到这一点。
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)
答案 0 :(得分:16)
您只需提供一个数字即可隐式填写列。
testdf['avg_sales_per_sku'] = testdf.sales.sum() / testdf.skus.sum()
插入标量值时,它会自然地传播到填充 专栏
答案 1 :(得分:1)
将分类平均值与总平均值混合在一起似乎令人困惑。你也可以使用:
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