Python Pandas 用 'prefix' + 相应的索引号填充数据框列中的缺失值

Python Pandas Filling missing values in dataframe column with 'prefix' + respective Index numbers

我想用 'any_fixed_prefix' + '_' + 'corresponding index'.

替换对象列中的缺失值

数据框看起来像:

应用逻辑后所需的数据框:

我尝试了几种方法,但不像 fillnamap 方法那样有效:

df['col1'].fillna(str(df.index))

df['col1].fillna('PRE_' + str(df.index))

DDL生成DataFrame:

df = pd.DataFrame({'col1': ['A', 'B', np.nan , np.nan ,'E'],
                   'col2': ['S4', 'S8', 'AA', 'EE', 'T4'],
                   'col3': [2017, 2019, 2021, 2014, 2011]})

如果您只想在 col1 中填充 NaN 值,您可以使用 fillna:

df['col1'] = df['col1'].fillna('PRE_' + df.index.to_series().astype(str))

如果你想在所有对象数据类型列中填充 NaN 值,你可以在轴上使用 mask 来填充索引(作为系列)。这将以相同的方式填充 NaN 值 col2

tmp = df.select_dtypes('object')
df = tmp.mask(tmp.isna(), 'PRE_' + tmp.index.to_series().astype(str), axis=0).combine_first(df)

输出:

    col1 col2  col3
0      A   S4  2017
1      B   S8  2019
2  PRE_2   AA  2021
3  PRE_3   EE  2014
4      E   T4  2011