我有一个数据框,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/