使用另一个位置改变pandas df

zvms9eto  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(331)

我有一个原创的Pandasdf:

import pandas as pd
import numpy as np

original_to_insert = pd.DataFrame({'col1': [10, 10, 10],
                               'col2': [10, 10, 10],
                               'col3': [10, 10, 10]})

我只想在一列中进行更改,具体的一列应使用另一列进行更改:

df_true_false_dummies = pd.DataFrame({'col1': [1, 0, 1],
                                      'col2': [0, 1, 0],
                                      'col3': [0, 0, 0]})

我有每行要更改的特定值+惩罚:

value_to_add = np.array([5, 4, 2])

penalty = 0.95

因此,我将获得所需的输出(要更改的列由 df_true_false_dummies df:

desired_df = pd.DataFrame({'col1': [10 + 5 * penalty, 10, 10 + 2 * penalty],
                           'col2': [10, 10 + 4 * penalty, 10],
                           'col3': [10, 10, 10]})

提前谢谢!

kadbb459

kadbb4591#

您可以选择多个 value_to_add 具有 df_true_false_dummies 通过广播,多个 penalty 最后在中添加原始值 original_to_insert :
注意-两个 Dataframe 中的索引和列必须相同。还有长度 value_to_add 必须与每个 Dataframe 的长度相同。

df = df_true_false_dummies * value_to_add[:, None] * penalty + original_to_insert
print (df)
    col1  col2  col3
0  14.75  10.0  10.0
1  10.00  13.8  10.0
2  11.90  10.0  10.0

相关问题