如何通过在 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
我有如下所示的 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