Python Pandas 用 'prefix' + 相应的索引号填充数据框列中的缺失值
Python Pandas Filling missing values in dataframe column with 'prefix' + respective Index numbers
我想用 'any_fixed_prefix' + '_' + 'corresponding index'.
替换对象列中的缺失值
数据框看起来像:
应用逻辑后所需的数据框:
我尝试了几种方法,但不像 fillna
或 map
方法那样有效:
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
我想用 'any_fixed_prefix' + '_' + 'corresponding index'.
替换对象列中的缺失值数据框看起来像:
应用逻辑后所需的数据框:
我尝试了几种方法,但不像 fillna
或 map
方法那样有效:
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