python - 创建多个数据框列,其中包含现有列的计算值

标签 python pandas for-loop dataframe

我有一个数据框,sega_df:

Month            2016-11-01     2016-12-01
Character                                                        
Sonic            12.0            3.0
Shadow           5.0             23.0

我想通过为数据框中每个已存在的列应用公式来创建多个新列(简而言之,列数几乎翻倍)。该公式为 (100 - [5*eachcell])*0.2

例如,对于 11 月的 Sonic,(100-[5*12.0])*0.2 = 8.0,对于 12 月的 Sonic,(100-[5*3.0])* 0.2 = 17.0 我理想的输出是:

Month            2016-11-01     2016-12-01     Weighted_2016-11-01    Weighted_2016-12-01
Character                                                        
Sonic            12.0            3.0           8.0                    17.0
Shadow           5.0             23.0          15.0                   -3.0  

我知道如何创建一个 for 循环来创建一列。这是仅考虑一个月的情况:

for w in range(1,len(sega_df.index)):
    sega_df['Weighted'] = (100 - 5*sega_df)*0.2
    sega_df[sega_df < 0] = 0

我还没有获得创建多个列的技能或经验。我一直在寻找其他问题,这些问题可能会回答我到底在做什么,但还没有任何进展。提前致谢。

最佳答案

一种矢量化方法是淹没到numpy:

A = sega_df.values
A = (100 - 5*A) * 0.2

res = pd.DataFrame(A, index=sega_df.index, columns=('Weighted_'+sega_df.columns))

然后将结果加入到原始数据框中:

sega_df = sega_df.join(res)

关于python - 创建多个数据框列,其中包含现有列的计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50627481/

相关文章:

python - 如何知道从库导入的 python 函数的位置

python - 如何在 Pandas 中的 transpose() 之后删除多余的行(或列)

python - 如果我取消注释 for 循环中的 print() 函数, 'groups' 列表将填充空列表而不是结果

javascript - For 循环在 Javascript 中多次追加对象

Python - 整个数据帧的 LogReturn

python - 循环遍历生成器的 Cythonizing for 循环

python - 从两个可迭代对象创建字典并使用它们

python - 如何用pylab编辑x轴?

Python、Matplotlib自定义坐标 Axis 共享Y轴

python - 如何在seaborn中显示正确的计数值?