Pandas如何按指定索引为现有DataFrame的指定列填充新值
Pandas DataFrame指定索引位置填充列值实现方案
下面是两种可直接使用的实现方式:
方法1:已知起始索引为3时直接赋值
直接通过loc定位目标行范围和列,传入新值即可完成填充:
# 存储新值的DataFrame默认命名为new_df df.loc[3:6, 'number'] = new_df['number2'].values
注:末尾加.values是为了直接取数组赋值,避免两个DataFrame索引对齐导致的赋值异常
方法2:自动识别空值起始位置填充
如果不确定NaN开始的索引位置,可以自动识别第一个空值位置后填充,通用性更强:
# 找到number列第一个空值的行索引 start_idx = df['number'].isna().idxmax() # 计算填充结束索引 end_idx = start_idx + len(new_df) - 1 # 执行赋值 df.loc[start_idx:end_idx, 'number'] = new_df['number2'].values
完整可复现代码示例
import pandas as pd import numpy as np # 构造原始df df = pd.DataFrame({ 'year': [1945, 1950, 1955, 1960, 1965, 1970, 1975], 'number': [10, 15, 20, np.nan, np.nan, np.nan, np.nan], 'letter': ['a', 'b', 'c', np.nan, np.nan, np.nan, np.nan] }) # 构造存储新值的new_df new_df = pd.DataFrame({ 'number2': [25, 30, 35, 40] }) # 执行填充 df.loc[3:6, 'number'] = new_df['number2'].values # 打印结果验证 print(df)
运行代码后即可得到你需要的目标DataFrame结构。
内容的提问来源于stack exchange,提问作者luthierz
相关产品推荐
相关产品推荐

