在DataFrame dff中设置特定列总和为所需值
我正在尝试把一个叫做 dff 的数据表中的特定列的总和设置为一些预先设定的值。现在,我的 dff 数据表是通过对多个数据表(df、df2、df3 和 df1)进行乘法和加法操作后得到的。在计算完行和列的总和后,我想确保 dff 的列总和分别是 6000、7000、8000 和 9000。
data = np.random.randint(100, 1000, size=(9, 4))
df = pd.DataFrame(data, columns=['Q1', 'Q2', 'Q3', 'Q4'], index = ['A','B','C','D','E','F','G','H','I'])
# Repeat the above for df1, df2, and df3
# Define weights
weight_df = 0.1
weight_df2 = 0.2
weight_df3 = 0.3
weight_df1 = 0.4
# Calculate weighted sum
dff = df.mul(weight_df).add(df2.mul(weight_df2)).add(df3.mul(weight_df3)).add(df1.mul(weight_df1))
# Calculate sum of rows
dff['row_totals'] = dff.sum(axis=1)
# Calculate sum of columns
column_totals = dff.sum(axis=0)
new_rows = pd.DataFrame({'column_totals': column_totals}).T
dff = dff.append(new_rows)
我该如何确保数据表 dff 的列总和在对多个数据表进行操作后,能够设置为 6000、7000、8000 和 9000 这些特定的值呢?
# Adjust column_totals to match desired values
desired_column_totals = [616.9, 585.5, 682.4, 456.8]
dff_adjusted = dff.copy()
for col, val in zip(dff_adjusted.columns, desired_column_totals):
dff_adjusted[col] += val - column_totals[col]
我尝试通过调整列中的值来使其匹配所需的总值。我的代码计算了所需总值 val 和当前列总和 column_totals[col] 之间的差,然后把这个差值加到列中的所有元素上。但是这样并没有成功。有没有更好的方法可以使用一些内置的库来实现?任何建议或替代方案都非常欢迎。
0 个回答
暂无回答