如何通过在 python 中添加同一列的 2 个不同行值的值来估算特定行值

How to impute specific row value by adding values of 2 different row values of same column in python

我有如下所示的 DataFrame:

 df = {'col1': {0: 'v1',
  1: 'v2',
  2: 'v3',
  3: 'v4'},
 'col2': {0: np.nan,
  1: 13,
  2: 76,
  3: 2},
 'col3': {0: np.nan,
  1: 91,
  2: 3,
  3: 33},
 'col4': {0: np.nan,
  1: 9,
  2: 47,
  3: 62}}

我想通过添加与“val2”和“val4”关联的值来替换与 col1 的“Val1”关联的所有“nan”值,并将其归因于 col2、col3 和 col4。

因此预期的输出将如下所示 -

  |    col1  col2   col3  col4
---------------------------------------
0 |   "v1"  15    124    71
1 |   "v2"  13    91     9
2 |   "v3"  76    3      47
3 |   "v4"  2     33     62

试试 loc

import numpy as np
import pandas as pd

df = pd.DataFrame({'col1': {0: 'v1', 1: 'v2', 2: 'v3', 3: 'v4'},
                   'col2': {0: np.nan, 1: 13, 2: 76, 3: 2},
                   'col3': {0: np.nan, 1: 91, 2: 3, 3: 33},
                   'col4': {0: np.nan, 1: 9, 2: 47, 3: 62}})

value_cols = ['col2', 'col3', 'col4']

# Sum and Assign Data
df.loc[df.col1.eq("v1"), value_cols] = \
    df.loc[df.col1.eq('v2') | df.col1.eq('v4'), value_cols].sum().values

# Fix Types
df[value_cols] = df[value_cols].astype(int)
print(df)

df:

  col1  col2  col3  col4
0   v1    15   124    71
1   v2    13    91     9
2   v3    76     3    47
3   v4     2    33    62